public interface IDoThings {
public void doSomeThing();
}
public class DoThings implements IDoThings {
@Override
public void doSomeThing() {
System.out.println("做一些事情");
}
}
public class Decorator implements IDoThings {
private IDoThings beverage;
Decorator(IDoThings beverage){
this.beverage =beverage;
}
@Override
public void doSomeThing() {
beverage.doSomeThing();
}
}
public class Eat extends Decorator{
Eat(IDoThings beverage){
super(beverage);
}
@Override
public void doSomeThing() {
super.doSomeThing();
System.out.println("吃饭");
}
}
public class Run extends Decorator{
Run(IDoThings beverage){
super(beverage);
}
@Override
public void doSomeThing() {
super.doSomeThing();
System.out.println("跑步");
}
}
public class TestDecorator {
public static void main(String[] args) {
IDoThings instance = new DoThings();
instance = new Eat(instance);
instance = new Run(instance);
instance.doSomeThing();
}
}

控制台输出为:

做一些事情
吃饭
跑步

代理模式和装饰器模式的区别

https://www.jianshu.com/p/c06a686dae39

最新文章

  1. mono for android学习过程系列教程(4)
  2. android Broadcast广播消息代码实现
  3. jquery-读取form表单中的所有数据列表
  4. 【转载】 postman使用教程
  5. 安装ORACLE后,改变计算机名称,导致OracleDBConsoleOrcl服务无法启动
  6. asp.net 中使用less
  7. 线性表(gcc实现)
  8. spring mvc 提交数组等复杂类型
  9. Android NDK入门实例 计算斐波那契数列一生成jni头文件
  10. SSH深度历险记(两) Jboss+EJB一审
  11. 一起来用css画画
  12. 由于服务主机:DCOM服务进程占用过多CPU,导致系统卡死
  13. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array(动态规划.递推)
  14. Luogu P4774 / LOJ2721 【[NOI2018]屠龙勇士】
  15. python 图片相似度
  16. MySQL条件检索_WHERE
  17. Matlab:椭圆方程的导数边值问题
  18. ubuntu16.04下python2、python3环境选择与python升级(pip版本切换)
  19. Codeforces Round #512 E - Vasya and Good Sequences
  20. this引用逃逸

热门文章

  1. VBA中的函数Timer用法
  2. category extension
  3. JVM插码之三:javaagent介绍及javassist介绍
  4. Less:Less(CSS预处理语言)
  5. 外置式与增量式PID模板程序(51单片机c语言)
  6. 输出缓存与CachePanel
  7. docker 部署服务时,node(结点)显示no such image
  8. delphi 线程教学第二节:在线程时空中操作界面(UI)
  9. call apply bind 的区别
  10. Could not get lock /var/lib/dpkg/lock - open 解决方法