码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式 - 装饰器模式

时间:2020-04-14 19:05:01      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:技术   ted   mil   log   继承   多层   blog   operation   ros   

UML 图:

技术图片

Component 功能接口,里面的 Operation 方法为具体要实现的功能

ConcreteComponent 接口具体的实现类或者说是实现主体

Decorator 装饰器类,一般是个抽象类和 Component 是聚合关系,里面包含了一个 Component 的引用

ConcreteDecorator 具体的装饰器类,将 ConcreteComponent 对象传递给这个类,即可对其原本 Operation 进行修饰增强

 

简述:对于装饰器模式,可以对原本的一些类的接口实现进行动态拓展,采用装饰器实现遵循了 "对修改关闭,对拓展开放" 的原则。可以避免很多同质化的拓展类的产生,且能够递归装饰/多层装饰(即采用不同的装饰器实现类装饰同一个类很多次)

 

代理模式区别?:这个模式和代理模式看起来很相似,但是从不同的角度看,两者还是有区别的,具体参考阅读

 

继承区别?:这个模式又和继承很类似,但是考虑多重装饰的情况,多重装饰可以产生出十分之多的组合,如果采用继承实现,那么就会产生一堆继承类。不够装饰器模式灵活

 

具体例子:JAVA IO 流中的 FilterInputStream 就是一个 Decorator

 

例子代码与参考阅读:

IO流和装饰器模式

装饰器模式的简单代码示例

设计模式 - 装饰器模式

标签:技术   ted   mil   log   继承   多层   blog   operation   ros   

原文地址:https://www.cnblogs.com/qwertiLH/p/12699611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!