敏捷软件开发 - 原则、模式与实践 —— 设计模式(三)FACADE模式和MEDIATOR模式

本文为敏捷软件开发 - 原则、模式与实践系列的一部分。

本文对应原书第15章

介绍

这两个模式有着共同的目的。它们都把某种策略施加到另外这一组对象上。FACADE模式从上面施加策略,而MEDIATOR模式则从下面施加策略。FACADE模式的使用是明显且受限的,而MEDIATOR模式的使用则是不明显且不受限的。

FACADE模式

图1

MEDIATOR模式

图2

图2展示了QuickEntryMediator的结构。用一个JList和一个JTextField构造了一个QuickEntryMediator类的示例。QuickEntryMediatorJTextField注册了一个匿名的DocumentListener。每当文本发生变化时,这个listener就调用textFieldChanged方法。接着,该方法在JList中查找以这个文本为前缀的元素并选中它。

JListJTextField的使用者并不知道该MEDIATOR的存在。它安静地呆着,把它的策略施加在那些对象上,而无需它们的允许或者知晓。

结论

如果策略涉及范围广泛并且可见,那么可以使用FACADE模式从上面施加该策略。另一方面,如果策略隐蔽并且有针对性,那么MEDIATOR模式是更好的选择。Facade通常是约定的关注点。每个人都同意去使用该facade而不是隐藏于其下的对象。另一方面,Mediator则对用户是隐藏的。它的策略是既成事实的而不是一项约定事务。

完整内容请查看敏捷软件开发 - 原则、模式与实践系列

你可能感兴趣的:(敏捷软件开发 - 原则、模式与实践 —— 设计模式(三)FACADE模式和MEDIATOR模式)