Java 装饰器模式详解(2)

Decorator装饰角色:持有一个抽象构件的引用。装饰对象接受所有客户端的请求,并把这些请求转发给真实的对象。这样,就能在真实对象调用前后增加新的功能。

ConcreteDecorate具体装饰角色:负责给构件对象增加新的功能。

装模式在Java I/O库中的应用

IO流实现细节:

Component抽象构件角色:io流中的InputStream,OutputStream,Reader,Writer

ConcreteComponent具体构件角色:io流中的FileInputStream,FileOutputStream

Decorate装饰角色:持有抽象构件的引用,FilterInputStream,FilterOutputStream

ConcreteDecorate具体装饰角色:负责给构件对象添加新的责任,BufferedInputStream,BufferedOutputStream等

优点

 扩展对象功能,比继承灵活,不会导致类个数急剧增加。

可以对一个对象进行多次装饰,创造出不同行为的组合,得到功能更加强大的对象。

具体构件��和具体装饰类可以独立变化,用户可以根据需要自己增加新的 具体构件子类和具体装饰子类。

缺点

产生很多小对象。大量小的对象占据内存,一定程度上影响性能。

装饰模式易出错,调试排查比较麻烦。

总结

装饰模式(Decorate)也叫包装模式(Wrapper)

装饰模式降低系统的耦合度,可以动态的增加或删除对象的责任,并使得需要装饰的具体构建类和具体装饰类可以独立变化,以便增加新的具体构建类和具体装饰类。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1b85400711e8d1585167b847772c0491.html