设计模式是什么

转载 2015年11月20日 13:47:10

 http://blog.csdn.net/lovelion/article/details/7420863 

俗话说:站在别人的肩膀上,我们会看得更远。设计模式的出现可以让我们站在前人的肩膀上,通过一些成熟的设计方案来指导新项目的开发和设计,以便于我们开发出具有更好的灵活性和可扩展性,也更易于复用的软件系统。

       设计模式的一般定义如下:

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。

      狭义的设计模式是指GoF在《设计模式:可复用面向对象软件的基础》一书中所介绍的23种经典设计模式,不过设计模式并不仅仅只有这23种,随着软件开发技术的发展,越来越多的新模式不断诞生并得以应用。

      设计模式一般包含模式名称、问题、目的、解决方案、效果等组成要素,其中关键要素是模式名称、问题、解决方案和效果。模式名称(Pattern Name)通过一两个词来描述模式的问题、解决方案和效果,以便更好地理解模式并方便开发人员之间的交流,绝大多数模式都是根据其功能或模式结构来命名的(GoF设计模式中没有一个模式用人名命名,微笑);问题(Problem)描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因;解决方案(Solution)描述了一个设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式,通常解决方案通过UML类图和核心代码来进行描述;效果(Consequences)描述了模式的优缺点以及在使用模式时应权衡的问题。

      虽然GoF设计模式只有23个,但是它们各具特色,每个模式都为某一个可重复的设计问题提供了一套解决方案。根据它们的用途,设计模式可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种,其中创建型模式主要用于描述如何创建对象结构型模式主要用于描述如何实现类或对象的组合行为型模式主要用于描述类或对象怎样交互以及怎样分配职责,在GoF 23种设计模式中包含5种创建型设计模式、7种结构型设计模式和11种行为型设计模式。此外,根据某个模式主要是用于处理类之间的关系还是对象之间的关系,设计模式还可以分为类模式和对象模式。我们经常将两种分类方式结合使用,如单例模式是对象创建型模式,模板方法模式是类行为型模式。

      值得一提的是,有一个设计模式虽然不属于GoF 23种设计模式,但一般在介绍设计模式时都会对它进行说明,它就是简单工厂模式,也许是太“简单”了,GoF并没有把它写到那本经典著作中,不过现在大部分的设计模式书籍都会对它进行专门的介绍。

      表1列出将要介绍的24种设计模式,其中模式的学习难度是我个人在多年模式使用和推广过程中的经验总结,仅作参考,模式的使用频率来自著名的模式推广和教育网站——http://www.dofactory.net

 

1  常用设计模式一览表

类型

模式名称

学习难度

使用频率

创建型模式

Creational Pattern

单例模式

Singleton Pattern

★☆☆☆☆

★★★★☆

简单工厂模式

Simple Factory Pattern

★★☆☆☆

★★★☆☆

工厂方法模式

Factory Method Pattern

★★☆☆☆

★★★★★

抽象工厂模式

Abstract  Factory Pattern

★★★★☆

★★★★★

原型模式

Prototype Pattern

★★★☆☆

★★★☆☆

建造者模式

Builder Pattern

★★★★☆

★★☆☆☆

结构型模式

Structural Pattern

适配器模式

Adapter Pattern

★★☆☆☆

★★★★☆

桥接模式

Bridge  Pattern

★★★☆☆

★★★☆☆

组合模式

Composite  Pattern

★★★☆☆

★★★★☆

装饰模式

Decorator  Pattern

★★★☆☆

★★★☆☆

外观模式

Façade  Pattern

★☆☆☆☆

★★★★★

享元模式

Flyweight  Pattern

★★★★☆

★☆☆☆☆

代理模式

Proxy  Pattern

★★★☆☆

★★★★☆

行为型模式

Behavioral Pattern

职责链模式

Chain  of Responsibility Pattern

★★★☆☆

★★☆☆☆

命令模式

Command  Pattern

★★★☆☆

★★★★☆

解释器模式

Interpreter  Pattern

★★★★★

★☆☆☆☆

迭代器模式

Iterator  Pattern

★★★☆☆

★★★★★

中介者模式

Mediator  Pattern

★★★☆☆

★★☆☆☆

备忘录模式

Memento  Pattern

★★☆☆☆

★★☆☆☆

观察者模式

Observer  Pattern

★★★☆☆

★★★★★

状态模式

State  Pattern

★★★☆☆

★★★☆☆

策略模式

Strategy  Pattern

★☆☆☆☆

★★★★☆

模板方法模式

Template  Method Pattern

★★☆☆☆

★★★☆☆

访问者模式

Visitor  Pattern

★★★★☆

★☆☆☆☆

【作者:刘伟 http://blog.csdn.net/lovelion

Serverless 是什么?又不是什么?

Serverless 是什么?又不是什么?
  • aflyeaglenku
  • aflyeaglenku
  • 2017年08月08日 09:28
  • 131

在java中,OOA是什么?OOD是什么?OOP是什么?

OOA   Object-Oriented Analysis:面向对象分析方法   是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的...
  • jingtingtiantanghai
  • jingtingtiantanghai
  • 2013年04月16日 09:19
  • 4803

在java中,OOA是什么?OOD是什么?OOP是什么?

Object-Oriented Analysis:面向对象分析方法   是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调...
  • XST891205
  • XST891205
  • 2017年12月12日 15:40
  • 108

爱情是什么? 婚姻是什么?

程序人生 爱情 婚姻 循环 贪婪
  • waldmer
  • waldmer
  • 2013年08月26日 16:38
  • 1948

LDAP是什么?OLAP是什么?OLTP是什么?

http://database.51cto.com/art/201106/267 2011-06-07 16:56 AooYu AooYu的博客 字号:T | T LDAP是一个数据库,...
  • langjian2012
  • langjian2012
  • 2014年10月16日 21:10
  • 983

ios是什么,ios是什么意思

iOS是由苹果公司开发的移动操作系统 。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple...
  • phper111
  • phper111
  • 2017年08月04日 20:42
  • 376

什么是Spring,IOC是什么?DI是什么?

Spring 学习笔记 已更新今天 1.什么是Spring(面试题)(惠普的两个哥们做的spring) Spring是一个容器,可以接管各...
  • sinat_30071601
  • sinat_30071601
  • 2017年04月16日 09:19
  • 1173

什么是Spring,IOC是什么?DI是什么?

1.什么是Spring(面试题)(惠普的两个哥们做的spring) Spring是一个容器,可以接管各个层次的Bean(action/domain/pojo/javabean),并且可以配置...
  • yiguang_820
  • yiguang_820
  • 2017年12月11日 19:45
  • 57

C#中as是什么含义?is是什么含义?

Is:检查对象是否与给定的类型兼容。例如,下面的代码可以确定MyObject类型的一个实例,或者对象是否从MyObject派生的一个类型: if(obj is MyObject){} ...
  • yanfeng918
  • yanfeng918
  • 2014年05月25日 22:55
  • 257

SSL是什么? SSL证书是什么?

大家都知道,HTTPS网址越来越普及,像百度、淘宝、京东、银行等官网都启用了HTTPS安全认证,但很少人知道,安全的背后是SSL证书起到的作用。 SSL是什么 SSL英文全称是Secure...
  • shaoqigulang
  • shaoqigulang
  • 2017年06月14日 11:49
  • 215
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式是什么
举报原因:
原因补充:

(最多只允许输入30个字)