从意图上来说Facade模式是为子系统中的一组借口提供一个统一接口,而Adapter模式是将一个类的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一期工作的类可以一起工作。
从实现上来看都是通过包装与对象聚集来实现。但两者是不同的包装。看看这两个模式设计的一些不同因素:
Facade 模式 | Adapter 模式 | |
是否存在既有的类? | 是 | 是 |
是否必须按某个接口设计? | 否 | 是 |
对象需要多态行为? | 否 | 可能 |
需要更简单的接口? | 是 | 否 |
Facade 模式中的动机是简化接口。而在Adapter模式中,尽管也是越简单越好,但是设计必须遵循一个已有的接口iou,不能简化热核东西,即使肯呢个存在更简单的接口。