设计模式教程

为什么要使用设计模式

使用 设计模式 是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。

项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应。

使程序呈现高内聚,低耦合的良好特性,使程序的复用性,可扩展性以及稳定性都有大大提高。有效节省开发成本,提高软件维护效率。

学习设计模式好处

提高了代码的可重用性,避免了一些重复工作,容易维护。使系统拥有很好的灵活性和扩展性。

开源工具,库和框架一般都大量使用了设计模式,因此学习设计模式对学习一些开源工具,库和框架有一定的帮助。

设计模式四个基本要素

模式名称(pattern name)

模式名称是一个助记名,它用一两个词来描述模式的问题、解决方案和效果。

问题(problem)

问题描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。

也可能描述了导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决条件。

解决方案(solution)

解决方案描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。

因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

效果(consequences)

效果(consequences) 描述了模式应用的效果及使用模式应权衡的问题。

尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。

软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。