何为模式
每个模式都是一个由三部分组成的规则,它表达的是某一环境、一个问题以及解决问题的方案之间的关系。
作为世界中的元素,每一个模式都是这三者之间的关系:某一环境、此环境中反复出现的某个因素系统以及这些因素能狗子我协调的某种空间配置。
作为语言的元素,模式就是一条指令,表明如何反复使用这个空间配置来解决给定的因素系统,只要这个空间配置在该环境中适用。
简而言之,模式是存在于世界中的事物,同时也是告诉我们如何创造这个事物,以及何时必须创造它的规则。它既是过程,又是事物;既描述了有活力的事物,又描述了产生事物的过程。
模式痴迷
模式的滥用通常是由对模式的痴迷而造成的。
在学习模式的道路上,避免模式痴迷也许是不可能的。
真正的模式之乐,来自于睿智地使用模式。重构使我们的注意力集中在去除重复、简化代码和使代码清晰表达的意图上,从而帮助我们明智地使用模式。当模式通过重构演进到系统之中时,模式过度设计的机会将很小。对重构的了解越深入,你就越有可能体会到模式之乐。
实现模式的方式不止一种
模式的结构图仅是一个例子而已,并不是规范。
结构图知识描绘了我们最经常见到的实现。
当实现面临的权衡要素发生变化时,实现就可能开始与结构图差异很大。
模式实现中采取最精简的形势也是演进设计实践的一部分。
通过重构实现、趋向和去除模式
在重构实现或者趋向一个模式后,必须评估设计是否确实得到了改善。如果没有最好返回或者向另一个方向重构。
模式是否会使代码更加复杂
通常而言,实现模式应该有助于去除重复代码、简化逻辑、说明意图和提高灵活性。但是,人们对模式的熟悉程度的对于他们如何看待基于模式的重构将起决定性作用。我希望开发小组去学习模式,而不要因为小组认为模式太过复杂而不使用模式。另一方面,有些模式的实现的确会使代码过分复杂;如果出现这种情况,返回或者进一步重构就非常必要。
模式知识
如果你不懂模式,就很难演进出优秀的设计。模式凝聚了前人的智慧。重用这种智慧时极为有益的。
仅仅具备模式知识还不足以演进出优秀的软件。你必须还懂得明智地使用模式。
无论如何,如果不研究模式,你就是主动地将许多重要且优美的设计思想拒于千里之外。
我推荐的获取模式知识的方式,是选择几本优秀的模式图书来学习,然后在学习小组中每星期学习一个模式。
使用模式的预先设计
一般不提倡使用模式的预先设计,但是它在设计人员的工具箱中应该找有一席之地。
应该非常审慎地采用使用模式的预先设计。