Java:装饰设计模式】的更多相关文章

对已有功能进行增强 示例 已有的类    调用 增强后的类 调用  思考? 为什么要这么做呢? SuperPerson 继承 Person 可以达到同样的效果. 继承的写法,其中MyBuffer...Reader写了3次,如果有更多的话,还会写更多的类.有些臃肿 第一次优化:将MyBuffer抽离出来 再看,利用多态实现多种方法 最终的结构.MyBufferReader 成为了增强的装饰类.就是装饰设计模式 对比原来的结构,是不是舒服很多 vs  看完这个再回过头看开始时候的示例.是不是就能够理…
将一个对象作为参数进行传递,然后对这个对象进行包装---改变其中的方法或者添加一些新的行为---装饰设计模式---装饰者模式---Decorate Model 改变一个方法: 1. 通过继承这个类,然后重写其中的方法 2. 通过对象的传递创建装饰对象,在装饰类中重新提供对应的方法继承的缺点: 1. 单继承 2. 利用向上造型创建了一个父类对象,可以调用子类中重写方法,不能在使用父类中原来的方法 3. 如果父类对象已经存在,不能使用子类中重写之后的方法 装饰设计模式的缺点: 可能提高代码的冗余度-…
这里给出一个顾客购买咖啡的例子.其中咖啡可以加冰(2元),加巧克力(4元). 下面是面向对象中装饰模式的解决方案. /** * Created with IntelliJ IDEA. * User: HYY * Date: 13-10-27 * Time: 下午10:49 * To change this template use File | Settings | File Templates. */ interface Product { public double money(); } c…
------- android培训.java培训.期待与您交流! ---------- 装饰设计模式: 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能. 那么自定义的该类称为装饰类. 装饰类通常会通过构造方法接收被装饰的对象. 并基于被装饰的对象的功能,提供更强的功能. 装饰模式比继承要灵活.避免了继承体系臃肿. 而且降低了类于类之间的关系. 装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能. 所以装饰类和被装饰类通常是都属于…
装饰设计模式就是对已有的对象的功能进行增强 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么自定义的该类称为装饰类. 装饰类通常会通过构造方法接收被装饰的对象.并基于被装饰的对象的功能,提供更强的功能. 例如:你有个对象有个功能 是在N年前建立的,如今你觉得功能不够用了 写个类把对象传进来就可以解决问题了 如果这个功能写错了 我就把自己写的功能去掉又不影响以前的功能灵活性相当强的. 装饰模式比继承要灵活.避免了继承体系臃肿.而且降低了类于类之间的…
IO流 IO流用来处理设备之间的数据传输 java对数据的操作是过流的方式 流按操作数据分为两种:字节流与字符流 流按流向分为:输入流,输出流. IO流常用基类 字节流的抽象基类:InputStream OutputStream 字符流的抽象基类:Reader,Writer 由这四个类派生出来的子类名称都是以其父类作为子 类名的后缀. 如InputStream 的子类 FileInpuStream Reader的子类FileReader 数据的最常见的形式是:文件 字符读取缓冲区: class…
JAVA之旅(二十六)--装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片 一.装饰设计模式 其实我们自定义readLine就是一种装饰模式 当想要对已有的对象进行功能增强时,可以定义一个类,将已有对象传入,并且提供加强功能,那么自定义的该类就称为装饰类 package com.lgl.hellojava; public class HelloJJAVA { public static void main(S…
本文粗略的介绍下JavaIO的整体框架,重在解释BufferReader/BufferWriter的演变过程和原理(对应的设计模式) 一.JavaIO的简介 流按操作数据分为两种:字节流与字符流. 流按流向分为:输入流(读),输出流(写). 字符流由来就是:早期的字节流+编码表,为了更便于操作文字数据. 记住:只要是操作字符数据,应该优先使用字符流. 字节流的抽象基类:InputStream ,OutputStream. 字符流的抽象基类:Reader , Writer. 二.JavaIO中的流…
在java IO 流中我们经常看到这样的写法: ObjectOutputStream oos = new ObjectOutputStream( new BufferedOutputStream(new FileOutputStream("obj.ser"))); 这其实就是IO流使用装饰设计模式,装饰设计模式通常包含: 1.抽象的组件(抽象类或接口) 2.具体的组件:需要装饰的对象 3.抽象的装饰:包含了对抽象组件的引用以及装饰着共同的方法 4.具体的装饰类:被装饰的对象 下面模拟咖…
装饰设计模式 装饰设计模式概述 装饰模式就是使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类.是继承的替代方案 优点 使用装饰模式,可以提供比继承更灵活的扩展对象的功能,它可以动态的添加对象的功能,并且可以随意的组合这些功能 缺点 正因为可以随意组合,所以就可能出现一些不合理的逻辑 装饰设计模式,就是继承的替代方案. 例子: 手机的例子:(装饰设计模式) 现在用个电脑类来写代码例子: 1.现在有个电脑的规则接口: /** * 这是电脑类的规则接口 * * @author LZL…