装饰模式是一种可以不用修改类但可以改变类行为的设计模式,通过组合的方式实现比继承更加灵活的扩展,实现对修改关闭,对扩展开放。有如下优点:
1.可以动态的,无限量的来装饰被装饰对象(修改被装饰对象行为)
2.和被装饰对象是相同的超类型,可以在任何需要原始对象的地方用装饰对象替换
缺点是:装饰链很深很多的时候会定义很多类,让使用者迷惑,并且使用中构造装饰类前要先构造被装饰类对象,有可能要构造很多对象。具体类图如下:
UML类图Java中的I/O相关的API类,Android中Context相关类的实现都用到装饰模式。
网友评论