Java设计模式----装饰者模式

jwt-java 2019-07-07 原文

Java设计模式—-装饰者模式

装饰者模式介绍

装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。就增加功能来说,Decorator模式比生成子类更为灵活。 
装饰者模式的类图结构如下所示 

装饰者模式中类或接口的作用:

抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。
具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。
装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口。
具体装饰(ConcreteDecorator)角色:负责给构件对象“贴上”附加的责任。

 

下面给出装饰者模式的示例代码:

第一步:定义一个抽象接口,作为被装饰的对象基类

第二部:定义被装饰的具体对象,实现上面的接口

第三部:定义一个装饰者的抽象类,要与被装饰者具体对象实现同一个接口,并且要持有一个构件(Component)对象的实例

第四步:定义具体装饰者的对象,继承Decorator对象,并在里面定义具体的方法

第5步:测试

 打印结果:

从上面的例子中,我们可以得知,男人这个对象,只有一个穿着的方法,具体穿什么无法实现,这时通过装饰者模式,可以对Man这个对象进行装饰,赋予具体穿什么的方法,这样就实现了装饰的效果。

装饰者模式在jdk中应用体现:

最常见的在IO流中Inputstream运用了装饰者模式;下面具体看看源码来对比上面的示例;

首先InputStream最为被装饰对象的基类:

FileInputStream作为具体被装饰的对象:

FilterInputStream作为装饰者的基类,继承InputStream,并且持有InputStream对象的实例

BufferedInputStream作为具体的装饰者对象,继承了FilterInputStream,并对里面的方法进行了装饰;

 

发表于 2019-07-07 17:25 沆瀣一气 阅读() 评论() 编辑 收藏

 

版权声明:本文为jwt-java原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jwt-java/p/11146913.html

Java设计模式----装饰者模式的更多相关文章

随机推荐

  1. XSHELL工具上传文件到Linux以及下载文件到本地(Windows)

    Xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz, […]...

  2. Java 开发简单的贪吃蛇游戏 – 珍惜眼前人

    Java 开发简单的贪吃蛇游戏 public class Test { public static void […]...

  3. 前端工程师必须要知道的SEO技巧(1):rel=nofollow的使用

    前提:最近我在找工作,想面试一些关于前端的工作,被问到了一些关于SEO优化的问题.我深深的感觉我所回答的太过于 […]...

  4. 3dTiles 数据规范详解[4.1] b3dm瓦片二进制数据文件结构

    原创。转载请规范注明出处:https://www.cnblogs.com/onsummer/p/1325289 […]...

  5. 【笔记】h5 页面唤起电话呼叫

    参考文章:https://www.cnblogs.com/lilin1995/p/5640684.html 最 […]...

  6. centos7 搭建双网卡bond1(主备模式)实例

    前景须知: 在redhat6 中网卡叫bond,在redhat7及centos7中改名team,此处只记录ce […]...

  7. Linux搭建Socks5代理服务器

    下面笔者将用SS5在亚马逊云服务器上的Linux搭建一台Socks5 Proxy Server,具体过程如下: […]...

  8. [C++]基础题目总结

    C++期末复习 一、选择题考察的知识点(40分)   C++在C的基础上多了什么新特性 类和对象 继承 多态、 […]...

展开目录

目录导航