两个模式在使用的共同性上存在一定重合,但实现方式以及作用却不相同:
术语:
边界: 指模块内部和模块外部的分界线
Facade模式:
介绍: 模块边界内部通过一个或一组接口对边界外部的复杂接口提供封装, 降低复杂度以及对外部接口的依赖性.
使用: 如果策略适用于整个系统内部,则可以使用Facade
Mediator模式:
介绍: 模块边界内部, 通过一个Mediator类协调模块内部两个或多个成员以一种隐藏的方式关联.
使用: 如果策略无需被外界获知并且具有针对性, 则可以使用Mediator
例子:
TextBox personNameTextBox; //用于显示名字
TextBox personDescriptionTextBox; //用于显示描述信息
//PersonMediator 在其内部实现将两个textbox进行关联, 这样外部调用者无需知道Mediator的存在, 因为是被metiator以较为隐藏的方式进行了修饰
PersonMediator metiator = new PersonMediator(personNameTextBox, personDescriptionTextBox);