1.模式从何而来
♦模式起源于建筑领域
♦模式之父—Christopher Alexander(克里斯托弗·亚历山大)
♦模式定义:模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。【A pattern is a successful or efficient solution to a recurring problem within a context.】
2.软件模式的诞生
♦1991-1992年以“四人组(Gang of Four,简称GoF,分别是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”自称的四位著名软件工程学者将模式的思想引入软件工程方法学。
♦1994年GoF归纳发表了23种在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟。
♦软件模式包括设计模式、架构模式、分析模式、过程模式。(实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式。)
♦软件模式的基础结构:
- 问题描述:待解决的问题是什么
- 前提条件:在何种环境或约束条件下使用
- 解法:如何解决
- 效果:有哪些优缺点
♦设计模式:
-
- 在软件模式中,设计模式是研究最为深入的分支。
- 设计模式用于在特定的条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案。
- 1995年,GoF出版包含23种设计模式的《设计模式:可复用面向对象软件的基础》(《Design Patterns: Elements of Reusable Object-Oriented Software》)。标志着设计模式正式成为面向对象软件工程的一个重要研究分支。
3.设计模式是什么
♦设计模式定义:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。
♦设计模式一般包含模式名称、问题、目的、解决方案、效果等组成要素,其中关键要素是模式名称、问题、解决方案和效果。
-
- 模式名称:通过一两个词来描述模式的问题、解决方案和效果。绝大多数模式都是根据其功能或模式结构来命名。
- 问题:描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因。
- 解决方案:描述了一个设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式,通常通过UML类图和核心代码来进行描述。
- 效果:描述了模式的优缺点以及在使用模式时应权衡的问题。
♦设计模式分类:(两种分类方式经常结合使用,如单例模式是对象创建型模式,模板方法模式是类行为型模式)
-
- 根据用途:
- 创建型模式:主要用于描述如何创建对象。
- 结构型模式:主要用于描述如何实现类或对象的组合。
- 行为型模式:主要用于描述类或对象怎样交互以及怎样分配职责。
- 根据处理关系:
- 类模式:处理类之间的关系。
- 对象模式:处理对象之间的关系。
- 23种设计模式包含5种创建型设计模式、7种结构型设计模式和11种行为型设计模式。(简单工厂模式未包含在23种设计模式之中)
- 根据用途:
♦常用设计模式一览表:
4.设计模式的作用
♦设计模式是成功的、能够实现可维护性复用的设计方案,可以避免做重复性的工作,有助于提高开发和设计效率。
♦设计模式提供了一套通用的设计词汇和一种通用的形式来方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。(跨语言、跨平台、跨应用、跨国界)
♦设计模式有助于提高系统的可重用性、灵活性和可扩展性。
♦合理使用设计模式并对设计模式的使用情况进行文档化,将有助于别人更快地理解系统。
♦学习设计模式将有助于初学者更加深入地理解面向对象思想。
模式从不保证任何东西,它不能保证你一定能够做出可复用的软件,提高你的生产率,更不能保证世界和平。模式并不能替代人来完成软件系统的创造,它们只不过会给那些缺乏经验但却具备才能和创造力的人带来希望。