设计模式07-装饰者模式。
通过实现与修饰类相同的接口或父类,并将修饰类作为属性注入到修饰对象中,修饰模式的应用就完成了。
装饰器模式的重点是调用者不知道整个过程,仍然调用最初实现的接口或父类方法。
设计模式07-装饰模式(Decorator)
概述
通过实现与修饰类相同的接口或父类,并将修饰类作为属性注入到修饰对象中,修饰模式的应用就完成了。
装饰器模式的重点是调用者不知道整个过程,仍然调用最初实现的接口或父类方法。
和适配器模式的比较
装饰器和适配器有一个别名叫做Wrapper,它看起来像是包装一个类或对象,但是它们有不同的用途。
适配器模式的含义是将一个接口转换成另一个接口,其目的是通过改变接口来达到复用的目的。
装饰器模式不是改变被装饰对象的接口,而是保留原有的接口,而是增强原有对象的功能,或者改变原有对象的处理方式来提高性能。
所以这两种图案的设计目的是不一样的。
简单实践
JDK实现
1.有一个接口Source及其实现类codingSourceImpl。如果想要修改execute函数,而不修改现有的类并通过Source类型的声明调用它,可以使用decorator模式。
公共接口来源{
void execute();
}
公共类SourceImpl实现了Source {
@覆盖
public void execute(){ 0
}
}
2.创建一个SourceImpl的装饰器类,实现Source接口,并把要装饰的Source类型的实现类作为一个属性。
公共类SourceDecorator实现了源代码{
私人最终来源来源;
SourceDecorator(源代码){ 0
super();
this.source=source
}
@覆盖
public void execute(){ 0
source . method();
}
}
3.调用装饰器类SourceDecorator的示例如下:
公共类DecoratorPattern(
公共静态void main(String[]args){ 0
source source=new source impl();
source decorator=source decorator . builder()。来源(来源)。build();
decorator . execute();
}
}
源码解析
JDK InputStream流
java.io.FilterInputStream
公共类FilterInputStream扩展了InputStream {
InputStream中受保护的易失性;
受保护的FilterInputStream(InputStream in){ 0
this.in=in
}
FilterInputStream通过持有实现相同父类的对象来增强对象的功能。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/53728.html