本文写在po主初学JAVA时,在学习inputStream摸不着头脑,受Java IO-InputStream家族 -装饰者模式一文启发,所以在理清思路时写下本文.因为初学,如有错误,望指正. 因为和输入流与之对应的还有输出流(即OutputStream),在此只针对输入流InputStream讨论. 1. 家族老大: 一说起家族中的老大,InputStream自然是当仁不让,在java的输入流操作的类中,衍生出的基本子类有,可以理解为这些都是InputStream它的孩子(子类): Input…
在JAVA I/O类库里有很多不同的功能组合情况,这些不同的功能组合都是使用装饰器模式实现的,下面以FilterInputStream为例介绍装饰器模式的使用  FilterInputStream和FilterOutputStream 首先,这两个都分别是InputStream和OutputStream的子类.而且,FilterInputStream和FilterOutputStream是具体的子类,实现了InputStream和OutputStream这两个抽象类中为给出实现的方法. 但是,F…
原创文章,转载请标注出处:<Java设计模式系列-装饰器模式> 一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的. 而实际上,装饰器模式和代理模式的实现方式基本一致,只在目标的存在上有些差别,这个后面我们具体讲述. 二.初步分析 上面提到了两点: 涉及的是单方 目标是抽象的 我们来想一下,所谓单方主要指的是在整个装饰器模式中不存在双方调用,要解决的也不是双方调用的问题,而是解决…
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: [java] view plaincopy public interface Sourceable { public void method(); } [java] view plaincopy public class Source im…
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构. 这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,动态给一个对象添提供了额外的功能. 我们通过下面的实例来演示装饰器模式的用法.模拟一个人从想吃饭.找饭店.享受美食.结束吃饭的过程 代码展示: 首先创建一个被修饰的接口 Eat package decorator; //吃饭接口 public…
1.装饰器模式的定义(保持接口,扩展功能) Decorate装饰器,顾名思义,就是动态的给一个对象添加一些额外的职责,就好比对房子进行装修一样. 2.装饰器模式的特征 具有一个装饰对象. 必须拥有与被装饰对象相同的接口. 可与给被装饰对象添加额外的功能. 3.装饰器模式的典型应用,java.io包 4.装饰器模式的代码示例 /** * @Author long * @Date 2019/3/20 21:29 */ public interface SourceAble { void operat…
装饰器模式的作用 在不修改原先对象核心的功能的情况下,对功能进行增强. 增强对象的功能的途径 通过类继承的方式,对父对象进行增强操作,例如造车是父类,改装跑车,跑车加大灯,改装房车,房车加私人电影院.如图: 通过这种方式做的装饰类会因为业务的复杂性激增 2.通过装饰模式,将方法增强.如图 装饰模式架构 car :被装饰的抽象类 package javadesign.decorate; /** * 抽象小汽车 */ public interface Car { public void buildC…
装饰器模式使你可以在运行时使用类似于对象组成的技术来装饰类.这在我们希望实例化具有新职责的对象而无需对基础类进行任何代码更改的情况下尤其有用.本文是在学习完优锐课JAVA架构VIP课程—[框架源码专题]中<学习源码中的优秀设计模式>后写下的学习感悟.探讨了这种模式,并向你展示了如何使用提供的Java代码示例来实现它. 深入探索Java设计模式(一)之单例模式 深入探索Java设计模式(二)之策略模式 总览 装饰器模式是“四人帮”(Erich Gamma,Richard Helm,Ralph J…
课程名称:程序设计方法学 实验4:OOP设计模式-结构型模式的应用与实现 时间:2015年11月18日星期三,第3.4节 地点:理1#208 一.实验目的 加深对结构型设计模式的理解以及在开发中的实际应用能力. 二.实验内容 众所周知,开店的申请手续是很繁琐的.以个体工商户开一家小餐馆为例,首先要拿身份证原件及复印件到当地工商所登记名称,然后凭登记的名称分别到辖区内的环保部门和卫生监督所去申领排污许可证和卫生许可证.拿到这两个证后,再凭这两个证及相应的房屋租赁证明.身份证,去工商所申请领取工商营…
一.定义 装饰器模式又叫做包装模式(Wrapper).装饰器模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 在以下情况下应该使用装饰器模式: 1.需要扩展一个类的功能,或给一个类增加附加责任 2.需要动态的给一个对象增加功能,这些功能可以再动态的撤销 3.需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使其继承关系变的不现实. 二.类图 装饰器模式中的角色有: 抽象组件角色:给出一个抽象接口,一规范准备接收附加责任的对象 具体组件角色:定义一个将要接收附加责任的类…