
客户需要一个简单的接口来覆盖复杂子系统的功能。(其实还是没有说到位,什么叫覆盖,什么叫复杂子系统,什么叫功能)。
facade提供一个统一的接口,针对子系统中的一组接口(这些接口必然有一定的相似性)。facade定义了高层次的接口,使得子系统变得易用。同时有
助于降低子系统和用户之间的耦合。另一方面,如果Facade成为子系统的唯一访问点,也会限制用户可能需要的性质和灵活性。
Facade定义了新的接口,而Adapter使用旧的接口。Adapter使得两个已有的接口协同工作而不用定义一个新的接口。
Facade不增加新的功能,并且不被子系统类知道。
Abstract Factory可以作为Facade的替代,隐藏平台相关的class。
通常Facade以Singleton实现,因为只需要一个Facade对象。
my point:
facade中包含所有要处理的subsystem的class作为成员。把这些class之间需要协作的方面放在同一个方法中,再设置状态变量成员,根据状态变量来调用具体的某个subsystem class的方法。否则这些工作需要用户来做,带来使用的不便。