外观模式是迪米特法则的代表
迪米特法则:系统中的类,尽量不要与其他类互相作用,减少类之间的耦合度,如果两个类之间不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用
通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。
优点:
1)屏蔽了底层实现细节,使客户代码将变得很简单,统一和facade对象关联
2)提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类
3)降低耦合性,这使得组件变化不会影响到调用它的客户类,只需要调整外观类即可。
缺点
1)随着子系统的提供功能不断的增加,facade对象会变的很大不可维护
2)在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”