javaIO系统----再看装饰者模式】的更多相关文章

javaIO系统拥有各种各样的类,尤其是每次要进行读写操作时,总会一层套一层的new,以前不明白为什么要这样做,不过学习了适配器模式后,对于这种做法立刻了解了:动态扩展IO的功能,使之符合使用者的习惯,虽然这样的做法有时候会迷惑使用者,对于这个确定,确实恼火,不过当弄明白了其设计方式,个人觉得倒也不会造成太大的困扰. 一: 最基本的IO:inputStream,outputStream,Reader,Writer 前两者为JDK1.0中的内容,后两者为JDK1.1中增加的内容.首先要明确的是,任…
通过模拟咖啡馆的点单系统来剖析装饰者模式的使用 参考:https://blog.csdn.net/gududedabai/article/details/81989196 一).传统的点单系统构建,每一个种类的咖啡都定义一个类 弊端: 如果为每一种混合咖啡都定义一个类,那么,会产生很多的类对象. 混合咖啡的价格是在单品咖啡的基础上的,如若某一单品咖啡的价格 发生改变,那么就要修改与之关联的所有的混合咖啡的价格. 咖啡的共同属性: /** * 抛转引玉 * --:咖啡订单系统 * 1.咖啡店售卖四…
刚开始接触装饰者的设计模式,感觉挺难理解的,不够后来花了一个晚上的时间,终于有头绪了 装饰者设计模式:如果想对已经存在的对象进行装饰,那么就定义一个类,在类中对已经有的对象进行功能的增强或添加另外的行为,这个类就叫装饰者类.被修饰的类叫被装饰者类,是已经存在有的功能.在装饰者类之间又可以互相装饰 特点:          1.装饰类通过构造方法来接收被装饰者的对象,调用它里面的功能或行为          2. 基于对被装饰对象的功能进行扩展,提供更强大的功能 Java中的IO流是典型的装饰者模…
要实现装饰者模式,注意一下几点内容: 1.装饰者类要实现真实类同样的接口 2.装饰者类内有一个真实对象的引用(可以通过装饰者类的构造器传入) 3.装饰类对象在主类中接受请求,将请求发送给真实的对象(相当于已经将引用传递到了装饰类的真实对象) 4.装饰者可以在传入真实对象后,增加一些附加功能(因为装饰对象和真实对象都有同样的方法,装饰对象可以添加一定操作在调用真实对象的方法,或者先调用真实对象的方法,再添加自己的方法) 5.不用继承,   先用实例说话,最后再具体装饰者模式   假设要制造添加甜蜜…
定义 在不改变原有对象的基础之上,将功能附加到对象上 适用场景 扩展一个类的功能 动态的给对象增加功能,当功能不需要的时候能够动态删除 详解 在看到定义的时候,可能很多人会想,这不就是继承吗?的确很像,不过是比继承更加有弹性的替代方案.就像原型模式和new之间的关系一样,有区别,但是区别又不是特别大.装饰者一个很重要的词就是动态,他可以灵活的选择要这个功能还是不要.在装饰者中要有四个角色:抽象的实体类,具体的实体类,抽象的装饰者,具体的装饰者.下面画一个大致的UML图 实体类创建之后,如果想扩展…
JavaIO体现出装饰者的设计模式 今天在学SparkRDD之前,听了一堂复习JavaIO的课,觉得讲得不错 Java的IO一直让我觉得一层一层的很麻烦,刚接触的时候,理不太清楚 只知道要分解为输入输出流和处理流:字节字符流: 下面通过这个例子,分解装饰者模式,是怎么一步步装饰的 InputStream in = new FileInputStream("xxxxxxxx") Reader reader = new BufferReader(new InputStreamReader(…
装饰者模式 装饰者模式(Decorator): 在不改变原对象的基础上,通过对其进行过包装拓展(添加属性高或者方法)使原有对象可以满足用户的更复杂需求. 如果现在我们有个需求,需要做一个提交表单,当我们选中输入框的时候,输入框旁会显示相应提示,或许我们会这样做: html中我们会添加一个输入框,后面放一个隐藏的提示信息 <input type="text" id="tel" /> <span id="tel_text" styl…
目录 应用场景 代码示例 改进代码 装饰者模式 定义 意图 主要解决问题 何时使用 优缺点 孙悟空的七十二变 应用场景 京东.天猫双十一,情人节商品大促销,各种商品有不同的促销活动 满减:满200减50 每满减:每满100减10 打折:买两件8折,三件7折 数量减:满三件减去最低价的一件 假设现在顾客买了两件衣服先是打了8折,然后又满200减了50,促销活动多重叠加了,该如何灵活实现订单金额计算? 代码示例 PromotionAlgorithm接口,计算订单金额: public interfac…
package day02; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.Reader; /** * 装饰者模式 * 这个例子是解决我们get方式乱码的前驱 * * @author mzy * */ public class DecoratorPatternDemo { /* * 需求: * 我们对IO流的工具进行装饰,形成我们特有的方式…
1.什么是装饰者模式 动态给对象增加功能,从一个对象的外部来给对象添加功能,相当于改变了对象的外观,比用继承的方式更加的灵活.当使用装饰后,从外部系统的角度看,就不再是原来的那个对象了,而是使用一系列的装饰器装饰过后的对象. 2.结构 角色: Component:组件对象的抽象接口,可以给这些对象动态的增加职责/功能. ConcreteComponent:具体的组件的对象,实现组件对象的接口,是被装饰器装饰的原始对象,即可以给这个对象动态的添加职责. Decorator:所有装饰器的抽象父类,实…