桥接
一般用于分离抽象与实现,在系统设计之初考虑,实现可以使用另一个类,可扩展性强,可以使用不同的实现,而不用继承。抽象和实现有没有固定的关系,可以在运行时修改实现的方式。并且抽象和实现部分都可以独立的扩展,而不相互影响。
适配器
常用于已有的两个模块中,因接口不同,而进行适配,对已有接口与所需接口不一致,从而使原来不匹配的接口能够工作在一起。类适配(继承) 对象适配(组合)
缺省适配 当原生接口有很多方法,而某一个类实现中,只需实现其中的某几个常用的方法,这时也可使用适配器模式,实现一个抽象类实现该接口,方法为空,而后继承该抽象类即可。从而适配了原有的接口。而实现中又不需实现所有的方法。
示例
在java io 中由InputStream,OutputStream,Reader和Writer代表的等级结构内部,有一些流处理器如(InputStreamReader)是对其它类型的流源的适配。这就是java io中适配器模式的应用。
InputStream inputStream = new FileInputStream("c:\\data\\input.txt"); Reader reader = new InputStreamReader(inputStream); //字符流适配到字节流 int data = reader.read(); while(data != -1){ char theChar = (char) data; data = reader.read(); } reader.close();
装饰模式
部分装饰流处理器对另一些流处理器到装饰作用,形成新的,具有改善了的功能的流处理器。
Java的I/O库总体设计是符合装饰者模式(Decorator)跟适配器模式(Adapter)的。如前所述,这个库中处理流的类叫做流类。引子里所谈到的FileInputStream,FileOutputStream,DataInputStream及DataOutputStream都是流处理器的例子。
装饰者模式:在由InputStream,OutputStream,Reader和Writer代表的等级结构内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的,具有改善了的功能的流处理器。装饰者模式是Java I/O库的整体设计模式。这样的一个原则是符合装饰者模式的,
BufferedInputStream DataInputStream ObjectInputStream等可以对FileInputStream、ByteArrayInputStream 等源流 起到装饰作用。
http://www.blogjava.net/dreamstone/archive/2007/01/08/92482.html
http://www.jasongj.com/design_pattern/bridge/