设计模式精炼(二): 结构型00
适配器模式
把一个接口转换成另一种接口从而能够匹配成客户端需要的接口。
类适配器模式
把适配类的API转换成目标类的API。
例:
对象适配器模式
对象的适配器模式不是使用继承关系连接到Adaptee类,而是使用委派关系连接到Adaptee类。
例:
装饰者模式
Wrapper模式,以对客户端透明的方式扩展对象的功能,是继承关系的一种替代。
|- 装饰模式的用意是在不改变接口的前提下,增强所考虑的类的性能。
|- 允许装饰模式改变接口,增加新的方法。
透明装饰模式
透明的装饰模式也就是理想的装饰模式,要求具体构件角色、装饰角色的接口与抽象构件角色的接口完全一致。
半透明装饰模式
装饰角色的接口与抽象构件角色接口不一致。
例:Java中的I/O设计模式,就是典型的装饰模式。
|- InputStream
|- ByteArrayInputStream
|- FileInputStream
|- FilterInputStream
|- BufferedInputStream
|- DataInputStream
|- LineNumberInputStream
|- PushbackInputStream //典型的半透明装饰模式,因为它扩展了一个unread()方法,这个方法是抽象接口所没有的。
|- ObjectInputStream
|- PipedInputStream
|- SquenceInputStream
|- StringBufferInputStream
适配器模式(做对比)
半透明装饰模式是介于透明装饰模式和适配器模式之间的一种设计模式。
例:
桥接模式
将抽象部分与它的实现部分分离,使他们都可以独立变化,目的是提高系统的可扩展性。
情景:将n种颜色涂在n种形状里,如何设计?
|- 提供两个父类一个是颜色、一个形状,颜色父类和形状父类两个类都包含了相应的子类,然后根据需要对颜色和形状进行组合。
例:
结果:
白色 -->长方形
组合模式
以树的结构来描述部分与整体的概念,和文件系统类似,父文件夹、文件、子文件、子文件夹等等。
安全式
要求管理聚集的地方只出现树枝构件中,而不出现在树叶构件中。
例:
透明式
透明式的合成模式要求所有的具体构件类,不论树枝构件还是树叶构件,均符合一个固定接口。
例:
Composite和Leaf与上面一样,不一样的是Client端,Client不需要关心他们之间的关系:
本文转载自微信公众号【java学习之道】。
- 点赞
- 收藏
- 关注作者
评论(0)