装饰设计模式(Decorator)-IO
2017-04-07 17:29
337 查看
一、装饰设计模式
对一组对象的功能进行增强(对已有类进行增强使用装饰设计模式)
缓冲区就是根据装饰设计模式设计出来了的,增强了字符、字节流类。
继承虽然也能够实现功能的扩展和增强,但是会导致继承体系越来越臃肿,不够灵活,装饰比继承灵活。
特点:装饰类和被装饰类都必须所属同一个接口或着父类
女人——化妆+学习——完美的女人
房子——装修——漂亮的房子
能用接口多态,就不要用继承
继承形式
接口形式
LineNumberReader(一个装饰类)
跟踪行号,可以设置和获取当前行号,默认从0开始编号
对一组对象的功能进行增强(对已有类进行增强使用装饰设计模式)
缓冲区就是根据装饰设计模式设计出来了的,增强了字符、字节流类。
继承虽然也能够实现功能的扩展和增强,但是会导致继承体系越来越臃肿,不够灵活,装饰比继承灵活。
特点:装饰类和被装饰类都必须所属同一个接口或着父类
女人——化妆+学习——完美的女人
房子——装修——漂亮的房子
能用接口多态,就不要用继承
继承形式
//测试 public class Text { public static void main(String[] args) { People p = new ChGF(new TgGF(new People("张三", "男")));//父类引用指向子类对象 p.GF(); } } // //原类——人 public class People { private String name; private String sex; public People(String name, String sex) { this.name = name; this.sex = sex; } public String getName() { return name; } public String getSex() { return sex; } public void GF() { System.out.println("我不会功夫"); } } //抽象类继承原类,重写原类的所有方法,封装一个原类 public abstract class WipperPeople extends People { private People people; public WipperPeople(People people) { super(people.getName(), people.getSex()); this.people = people; } @Override public String getName() { return people.getName(); } @Override public String getSex() { return people.getSex(); } @Override public void GF() { people.GF(); } } //继承抽象类的多种包装类 public class ChGF extends WipperPeople { public ChGF(People people) { super(people); } @Override public void GF() { super.GF(); System.out.println("我拜了李小龙为师,现在我也会中国功夫了!"); } } public class TgGF extends WipperPeople { public TgGF(People people) { super(people); } @Override public void GF() { super.GF(); System.out.println("我去了趟泰国,学会了泰拳!"); } }
接口形式
//接口:原类规范 //原类 实现 接口 //抽象类 实现 接口,内部封装一个原类,重写接口所有方法 //包装类继承抽象类,可根据需要覆写方法 //测试,接口类引用指向实现类对象
LineNumberReader(一个装饰类)
跟踪行号,可以设置和获取当前行号,默认从0开始编号
public class Demo { public static void main(String[] args) throws IOException { FileReader f = new FileReader("Demo(1).txt"); LineNumberReader l = new LineNumberReader(f); String line = null; l.setLineNumber(2);//设置行号从哪里开始 while((line = l.readLine()) != null) { sopl(line + ",,," + l.getLineNumber());//获取行号和每行内容 } l.close(); } } //读.java文件时使用
相关文章推荐
- 设计模式-装饰模式(Decorator)在jDK中IO系统的应用
- java.io.*中的设计模式之 装饰(Decorator)模式
- 设计模式之装饰模式篇(Decorator)
- 设计模式之装饰模式篇(Decorator)
- 设计模式之decorator装饰模式
- .NET设计模式(10):装饰模式(Decorator Pattern)
- 设计模式--装饰模式(Decorator)
- 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern)
- NET设计模式之一:装饰模式(Decorator Pattern)
- .NET设计模式-装饰模式(Decorator Pattern)
- .NET设计模式(10):装饰模式(Decorator Pattern)
- 设计模式c#语言描述——装饰(Decorator)模式
- 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern)
- Java设计模式-----Decorator装饰模式
- 设计模式c#语言描述——装饰(Decorator)模式
- 结构型设计模式---Decorator模式(装饰模式)
- 解读设计模式----装饰模式(Decorator Pattern)
- DOTA版设计模式——装饰模式[Decorator Pattern]
- [导入]C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式).zip(9.84 MB)
- 设计模式(11)-装饰模式(Decorator)