10.1 为什么使用设计模式
设计模式的概念兴起之时并不是为了软件重用。其实设计模式的重大影响在于建造建筑和城市。Christopher Alexander在《模式语言:城镇、建筑、构造》中强调:“每个模式描述了一个在现实环境中反复出现的问题,然后描述了针对该问题的核心解决方案,你可以重复使用这个方案上百万次,而无须重复相同的工作。”
模式的四个元素
GoF描述了一个模式包含四个必要的元素:
·模式名称,使用一到两个词语来描述一个设计问题、对应的解决方案以及后果。可以将模式名称放入到设计词汇中。模式名称可以建立起更高层级的抽象。建立模式词汇表有助于和同事讨论模式,甚至自己在文档中使用这些模式词汇。这样更容易思考设计并且权衡不同设计方案之间的利弊。为模式找到一个合适的名称并放到词汇表并不容易。
·适用于该模式的待解决的问题,需要解释该问题的详细内容。可以描述具体的设计问题,比如如何用对象表示算法。也可以描述一个稳固设计中的类和对象结构。有时该问题会包含一系列条件,在应用该模式之前这些前置条件必须全部满足。
·解决方案,描述了设计方案,比如类与对象之间的关系,各自的职责和协作等。该方案并不是一种特殊的具体的设计或实现,因为模式更像是模板,可以应用到多种情况中。模式提供了一种设计问题的抽象描述,以及如何使用通用的元素(这里指类和对象)来解决问题。
·效果,效果是指应用该模式的结果以及利弊。尽管效果自身不说话,但当描述设计决策时,可用效果来评估设计决策以及帮助理解应用该模式的利弊。对于软件而言效果往往关心空间和时间的权衡,也可以关于语言和实现问题。因为重用通常是面向对象设计的一个因素,模式的效果包括了对系统灵活性、扩展性以及可移植性的影响。明确地列出效果会有助于你理解并评价它们。
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access