装饰模式
2024/5/17...大约 1 分钟
装饰模式
它的代码结构跟桥接模式非常相似,不过,要解决的问题却大不相同。
英文:Decorator /ˈdekəreɪtə(r)/
代理模式中,代理类附加的是跟原始类无关的功能,而在装饰器模式中,装饰器类附加的是跟原始类相关的增强功能。
简单理解:
// 代理模式的代码结构(下面的接口也可以替换成抽象类)
public interface IA {
void f();
}
public class A impelements IA {
public void f() { //... }
}
public class AProxy implements IA {
private IA a;
public AProxy(IA a) {
this.a = a;
}
public void f() {
// 新添加的代理逻辑
a.f();
// 新添加的代理逻辑
}
}
// 装饰器模式的代码结构(下面的接口也可以替换成抽象类)
public interface IA {
void f();
}
public class A implements IA {
public void f() { //... }
}
public class ADecorator implements IA {
private IA a;
public ADecorator(IA a) {
this.a = a;
}
public void f() {
// 功能增强代码
a.f();
// 功能增强代码
}
}
带可嵌套结构: https://blog.csdn.net/weixin_45284646/article/details/130838040
装饰模式和代理模式的区别:代理模式和装饰模式的区别