设计模式结构型包含:适配器模式、桥接模式、组合模式、装饰模式、享元模式、外观模式、代理模式。
关系分类
适配器:将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
比如你的电脑只能支持一个type-c接口,但是你需要一个usb接口,这时候一个转换器就可以解决这个问题,这个转换器充当的角色就是适配器。
桥接模式:将抽象部分与它的实现部分分离,使他们都可以独立的变化
Abstraction 与Implementor类的聚合就可以看作是桥接的桥了
组合模式:将对象组合成树形结构以表示部分-整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
可以理解为总公司和分公司的关系,具体的抽象类可以就是总公司,抽象类的子类就是分公司。
组合模式的好处:组合模式定了包含基本对象组合对象的的类的层次结构。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样不段的递归下去,客代码中,任何用到基本的对象的地方都可以使用组合对象。
用户不关心到底是处理一个叶子点还是处理一个组合组件,也就用不着为定义组合而写一些选择判断语句
组合模式让客户可以一致的使用组合结构和单个对象。
装饰模式:动态的给一个对象添加一些额外道德职责。就增加功能来说,装饰模式相比生成子类更加灵活。
外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
享元模式:为运用共享技术有效的支持大量细粒度的对象
如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用;还有就是对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑使用享元模式。