习惯四:保持模式独一无二和优点突出
(Keeping Patterns Distinct and Complementary)
当你开发多个模式时有一个趋向需要避免。
当你写一个模式时,可能趋向于在细节和
口径(scope)同时增长。在这时很容易忘记
其它模式。模式之间的区别结果变得模糊了,
使别人无法分组(collectively)理解模式。
它们开始在口径和目的上互相重叠。这可能
对作者来说非常清楚,而对新手来说不那么
清楚。他们将不知道什么时候去使用一个模
式而不是另一个,因为它们之间的区别不那么
明显。
所以确保你的模式是正交的(orthogonal)并且
它们合力(synergistically)工作。持续问你
自己:“模式X和模式Y的区别是什么?”如果
解决相同的或相似的问题,你可以把它们合并。
如果两个模式使用相似的类层次(hierarchies),
则不用担心。在OO编程中有这么多方法使用
相对少的继承机制。通常相同的类使用将会
导致表示广泛变化的明显的不同对象结构。
让模式的意图作为它们不同点,而不是实现它们
的类结构的指南。
一个测试你的模式怎样正交和合作的好的方法
是保持分离的文档来比较(compare)和对比
(contrast)你的模式。在<<设计模式>>中
我们提供了多个为了这个目的的部分。试图
在写下来的形式下解释模式关系的简单行为
给我们对我们的模式的新的视角。不止一次
它让我们重新思考它们的一些部分。
我的唯一遗憾是我们在游戏中没有早一点重视
关系。我建议你尽早开始写下这个附件材料。
这可能看上去是做傻事,特别当你有很多模式
需要比较。不过当你只有两个模式时,重叠
得可能性出现了。初期花时间比较和对比
泥的模式将帮助你保持你的模式独一无二
而且优点突出。