设计模式-装饰模式(DECORATOR)

定义

装饰模式(DECORATOR):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。

类图

component是一个接口对象,现在可以给这些接口对象动态的添加职责,concretecomponent是具体的实现类,也可以给他增加职责,decorator是装饰抽象类,继承了component,从外类来扩展component对象的功能,concretedecorator则是具体的添加的功能。

将component写到装饰抽象类中,这样每个装饰对象的实现就和如何使用这个对象分离开,每个装饰对象只需要关心自己的功能,而不需要关心自己如何被加到对象链当中。

优点

将被装饰对象中的主要核心功能和装饰功能分离开,降低被装饰对象的复杂度,简化类的结构。

JDK类库中的装饰者模式

java.io.BufferedInputStream(InputStream) 
java.io.DataInputStream(InputStream) 
java.io.BufferedOutputStream(OutputStream) 
java.util.zip.ZipOutputStream(OutputStream) 
java.util.Collections#checkedList|Map|Set|SortedSet|SortedMap

io包中的BufferedInputStream、DataInputStream是FilterInputStream的子类,FilterInputStream是InputStream的子类,BufferedInputStream、DataInputStream中的read()方法都间接地调用了InputStream的read()方法。

io包中的BufferedOutputStream、util包中的ZipOutputStream是FilterOutputStream的子类,FilterOutputStream是OutputStream的子类,BufferedOutputStream、ZipOutputStream中的write()方法都间接地调用了OutputStream的write()方法。

checkedList是Collections的内部类,checkedList是CheckedCollection的子类,checkedList的add()方法调用了CheckedCollection的typeCheck()方法。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值