HeadFirst design pattern笔记-装饰者模式
2013-07-07 12:52
471 查看
装饰者模式:动态地将责任附加到对象上,提供了比继承更有弹性的替代方案
装饰者模式的特点:
1.装饰者和被装饰者有相同的父类
2.可以用一个或者多个装饰者包装一个对象
3.可以在运行时动态地用装饰者来装饰对象
4.装饰者可以在其被装饰者的行为(方法)前/后,加上自己的行为
装饰者与继承的方法不同的是,如果依赖继承,有新的行为时,要修改现有的方法,而装饰者模式不用修改已有的类的方法,直接new一个装饰者去包装这个现有的类就可以了。当然这样也会带来缺点,常常会造成设计中有大量的小类,JAVA的I/O便是这种情况。
Java I/O中装饰者的例子:
编写自己的IO装饰者:
把输入流内的大写字母转换成小写
测试:
结果:
test the stream
装饰者模式的特点:
1.装饰者和被装饰者有相同的父类
2.可以用一个或者多个装饰者包装一个对象
3.可以在运行时动态地用装饰者来装饰对象
4.装饰者可以在其被装饰者的行为(方法)前/后,加上自己的行为
装饰者与继承的方法不同的是,如果依赖继承,有新的行为时,要修改现有的方法,而装饰者模式不用修改已有的类的方法,直接new一个装饰者去包装这个现有的类就可以了。当然这样也会带来缺点,常常会造成设计中有大量的小类,JAVA的I/O便是这种情况。
Java I/O中装饰者的例子:
new DataInputStream(new BufferedInputStream(bew FileInputStream(xxx)));DataInputStream和BufferedInputStream都扩展自FilterInputStream
编写自己的IO装饰者:
把输入流内的大写字母转换成小写
import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; public class LowerCaseInputStream extends FilterInputStream{ protected LowerCaseInputStream(InputStream in) { super(in); } @Override public int read() throws IOException { int c = super.read(); return (c == -1 ? c : Character.toLowerCase((char)(c))); } @Override public int read(byte[] b, int off, int len) throws IOException { int result = super.read(b, off, len); for (int i = off; i < result + off; i++) { b[i] = (byte)Character.toLowerCase((char)b[i]); } return result; } }
测试:
import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; public class Test { public static void main(String[] args) throws IOException { InputStream in = new LowerCaseInputStream( new BufferedInputStream( new ByteArrayInputStream("TEST THE STREAM".getBytes()))); int c = 0; while ((c = in.read()) >= 0) { System.out.print((char)c); } in.close(); } }
结果:
test the stream
相关文章推荐
- 装饰者模式--《Head First DesignPattern》
- 《Head First Design Patterns》笔记二:观察者模式(Observer Pattern)
- 《Head First Design Patterns》笔记八:外观模式(Facade Pattern)
- HeadFirst design pattern笔记-观察者模式
- HeadFirst design pattern笔记-单例模式
- 《Head First Design Patterns》笔记三:装饰者模式(Decorator Pattern)
- 《Head First Design Patterns》笔记九:模版模式(Template Method Pattern)
- Head First Design Pattern - 学习笔记
- head first design pattern 阅读笔记
- 《Head First Design Patterns》笔记十四:复合模式(Compound Pattern)
- Head First Design patterns笔记-Decorator Patterns (从”用不同技能武装自己”看装饰模式)
- 《Head First Design Pattern》读后感-----设计模式
- Head First Design Patterns 阅读笔记之八: the Template Method Pattern
- 《Head First Design Patterns》笔记六:命令模式(Command Pattern)
- Head First Design Patterns 阅读笔记之六: Command Pattern
- 《Head First Design Pattern 》--设计模式 读书笔记
- 设计模式之 观察者模式 the observer design pattern ---------《head first design pattern》
- Head First Design patterns笔记-Strategy Patterns (从不同的人使用不同的交通工具上班看策略模式)
- 《Head First Design Patterns》笔记十二:状态模式(State Pattern)