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