适配者模式:将接口转化为客户希望的接口,使不兼容的类可以一起工作;(类模式,对象模式);接口(方法或方法的集合)
实例:仿生机器人,加密适配器(第三方接口)
优点:将目标类与接口类解耦;类的透明性和复用性;扩展性增强,开闭原则;
缺点:类适配者(只能适配一个类,不能多;不能为最终类;抽象只能为接口),对象适配者(置换麻烦)
桥接模式:将抽象部分与现实部分分离,使他们能独立的变化;用聚合关联取代了继承;静态变为动态组合
实例:模拟毛笔大小颜色
优点:将接口与现实分离;两个维度可以独立的变化;增加了系统的扩展性,开闭原则;
缺点:增加系统设计难度理解难度,正确识别两个独立变化的维度难度大
组合模式:组合多个对象形成树形结构,“整体-部分”的关系;对单个对象和组合对象具有一致性
实例:水果盘,
优点:客户统一的使用;忽略层次差异;提供树形结构的解决方案;新增方便,开闭原则
缺点:新增构建类型限制
扩展:透明组合(抽象构件中声明了所有的方法)安全(抽象构件不声明,而是在composite中声明并实现)
装饰模式:动态的给一个对象增加额外的职责,比生成子类更灵活;客户透明添加职责;比增加子类,添加功能
实例:变形金刚(飞)多重加密(三层加密)
优点:静态(不需要继承,子类个数急剧增加)动态(动态的给对象添加职责);增加多个职责,独立的变化两个维度;扩展性好,开闭
外观模式:外部与子系统的通信通过统一的外观对象进行,为子系统的一组接口提供统一的接口,提供高层次接口,子系统可以更容易使用
符合(单一职责,迪米特法则)
实例:电源总开关
优点:减少客户端处理的对象数目;客户端与子系统松耦合;子系统变化不影响其他子系统
扩展:抽象外观类
享元模式:运用共享技术对大量细粒度对象支持复用,系统使用对象少,对象相似,细粒度对象,轻量级
实例:共享网络设备
优点:减少内存中对象的数量,外部状态与内部状态独立
代理模式:给一个对象提供一个代理让代理操作原对象,客户端与原对象中介作用,客户端不能看到内容,添加新功能
实例:论坛权限代理
远程代理,虚拟代理,保护代理,缓冲代理(临时)