设计模式之禅读书笔记—结构类模式
结构类模式:通过组合类或对象产生更大结构以适应更高层次的逻辑需求
-
适配器模式
-
装饰模式
-
代理模式
-
门面模式
-
桥梁模式
-
享元模式
-
组合模式
适配器模式(变压器模式/包装模式)
定义:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作
优点:
-
可以让两个没有任何关系的类在一起运行
-
增加了类的透明性
-
提高了类的复用度
-
灵活性非常好
装饰模式(包装模式)
定义:动态地給一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更为灵活
优点:
-
装饰类和被装饰类可以独立发展,互不耦合.Component类无须知道Decorator类,Decorator类是从外部来扩展Component类的功能.
-
装饰模式是继承关系的一个替代方案.继承是静态的給类增加功能.而装饰模式是动态的增加
-
装饰模式可以动态的扩展一个实践类的功能
缺点:
减少多层装饰,降低系统复杂度.
使用场景:
-
需要扩展一个类的功能,或給一个类增加附加功能
-
需要动态的给一个对象增加功能,这些功能可以再动态的撤销
-
需要为一批的兄弟类进行改装或加装功能
代理模式(委托模式)
定义:为其他对象提供一种代理以控制对这个对象的访问
了解静态代理.动态代理区分和使用.动态代理详解
代理模式与装饰模式异同:
装饰模式是代理模式的一个特殊应用,两者都具有相同的接口,不同点则是代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱,它着重类的功能变化.
门面模式(外观模式)
定义:一种常见的封装模式.要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用.
优点:
-
减少系统的相互依赖
-
提供了灵活性
-
提高安全性
缺点:
不符合开闭原则.
桥梁模式(桥接模式)
定义:将抽象和实现解耦,使得两者可以独立的变化.(注意与装饰模式的异同)
优点:
-
抽象和实现分离
这也是桥梁模式的主要特点,完全是为了解决继承的缺点而提出的设计模式
-
优秀的扩充能力
-
实现细节对客户透明
使用场景
-
不希望或不适用使用继承的场景
-
接口或抽象类不稳定的场景
享元模式
使用共享对象可有效地支持大量的细粒度的对象
优点:
大大减少应用程序创建的对象,降低内存占用.
组合模式(合成模式)
将对象组合成树形结构以表示"部分-整体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性
优点:
-
高层模块调用简单
-
节点自由增加
注意事项:只要是树形结构,就要考虑使用组合模式.只要是提现局部和整体的关系的时候.