设计模式-外观模式、适配器模式
外观模式
Facade(外观或门面)—对象结构型模式定义:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。提供一个高层次的接口,使得子系统更易于使用。
Fracade 为 ComponentA 、ComponentB 、ComponentC 向外( ClientA 、ClientB) 提供统一的接口
代码示例
class ComputerFacade {private CPU cpu;private Memory memory;private Disk disk;public void start() {cpu.initialize();memory.load();disk.read();}
}
外观类协调多个底层组件,提供业务导向的接口。
设计原则:
• 遵循迪米特法则(最少知识原则)
• 不符合开闭原则
适用场景分析:
1. 当一个复杂系统的子系统很多时,外观模式可以为系统设计一个简单的接口供外界访问。
适配器模式
Adapter(适配器)—类对象结构型模式定义:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
AdapterA 先将 LibraryClass 封装起来,其对外提供的 operation() 方法中调用 LibraryClass 对象的method()方法,若以后换类库,只需改 AdapterA 类或者创建新的 Adapter 实现类即可。
设计原则:
• 遵循开闭原则
使用场景:
1.比如系统扩展了,需要使用一个已有或新建立的类,但这个类又不符合系统的接口,怎么办?使用适配器模式。
2.编码解码、一拖三充电头、HDMI转VGA、Type-C转USB。
这里复习区分下装饰器模式和适配器模式:
适配器模式:适配新的接口,所以要实现和被适配对象是两个不同的接口。
装饰器模式:装饰原有的接口,所以要实现和被装饰对象相同的接口。