在《周期》中作者这样描述过模式:“人类必须生活在现实世界中。我们寻找模式和规律,能够让我们活得更加舒服,也获利更多。”
你曾经多少次有过这种感觉—你已经解决过了一个问题,但就是不能确切知道是在什么地方或怎么解决的?如果你能记起以前问题的细节和怎么解决它的,你就可以复用以前的经验而不需要重新发现它。然而,我们并没有很好记录下可供他人使用的软件设计经验。设计模式的目标是将设计经验以人们能够有效利用的形式记录下来。来复用设计经验,很多问题不必要再从头做起。
设计模式的起初还是来源于建筑业。设计模式的定义:“每一个模式描述了一个在我们周围不断重复发生的问题, 以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”(这个定义是Christopher Alexander 说的(Christopher Alexander,1936年10月4日生于奥地利维也纳)是加州大学伯克利分校的终身教授和承包商,同时也是建筑师。)尽管Alexander所指的是城市和建筑模式,但同样也适用于面向对向设计模式。最近理解同样也可以用于其他行业的模式,如投资寻找相应的模式和规律进而找到人生获胜的公式。
设计模式有四个基本的元素模式名称、问题、解决方案、效果。
1.模式名称:一个助记名,用一两个词来描述问题、解决方案和效果,便于同行间沟通交流。
2.问题:描述问题相关背景和问题的上下文,问题产生的前因后果,有时候描述设计模式的先决条件。
3.解决方案:问题解决方案,是设计的组成部分,描述了对象间的各自的关系和职责和协作方式。描述怎样通过一般的元素组合来解决问题的。
4.效果:描述模式应用的效果和使用模式的权衡问题。决策的过程也很重要。这个包含了两个重要的点,模式应用后的效果和选用模式如何去权衡的。、
模式就像是一个模板,可以应用于多个场合来形成一种经验。不管是在建筑业,还是IT业,还是其他行业,模式都可以一次又一次去复用,尤其是历经过考验的成功的一些模式。在学习设计模式的过程中,一方面是学习软件行业已有的设计模式,另一方面学习如何记录软件设计或者其他方面的遇到的问题形成自己一个模式库。
我们努力想要看透人生,方法是识别模式,进而找到人生获胜的公式。