Java设计模式----装饰者模式
2019-08-16 09:55:32来源:博客园 阅读 ()
装饰者模式介绍
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。就增加功能来说,Decorator模式比生成子类更为灵活。
装饰者模式的类图结构如下所示
装饰者模式中类或接口的作用:
抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。
具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。
装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口。
具体装饰(ConcreteDecorator)角色:负责给构件对象“贴上”附加的责任。
下面给出装饰者模式的示例代码:
第一步:定义一个抽象接口,作为被装饰的对象基类
第二部:定义被装饰的具体对象,实现上面的接口
第三部:定义一个装饰者的抽象类,要与被装饰者具体对象实现同一个接口,并且要持有一个构件(Component)对象的实例
第四步:定义具体装饰者的对象,继承Decorator对象,并在里面定义具体的方法
第5步:测试
打印结果:
从上面的例子中,我们可以得知,男人这个对象,只有一个穿着的方法,具体穿什么无法实现,这时通过装饰者模式,可以对Man这个对象进行装饰,赋予具体穿什么的方法,这样就实现了装饰的效果。
装饰者模式在jdk中应用体现:
最常见的在IO流中Inputstream运用了装饰者模式;下面具体看看源码来对比上面的示例;
首先InputStream最为被装饰对象的基类:
FileInputStream作为具体被装饰的对象:
FilterInputStream作为装饰者的基类,继承InputStream,并且持有InputStream对象的实例
BufferedInputStream作为具体的装饰者对象,继承了FilterInputStream,并对里面的方法进行了装饰;
原文链接:https://www.cnblogs.com/jwt-java/p/11146913.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash