设计模式-简介

来源:互联网 发布:办公室平台软件 编辑:程序博客网 时间:2024/06/08 17:44

前言

       设计模式一直是被我忘了又看,看了又忘。究其原因,首先我觉得是缺乏较多的实践,这个只能是在平时的reading和coding中多多注意了,看看优秀的开源框架如spring,springmvc等用到了哪些模式,以及自己coding的时候有没有用到哪些模式。另外一个很重要的原因,我觉得是我每次看完之后都没有进行相应的梳理和总结。所以这一次决定把自己的一些理解和总结写下来,写一个设计模式系列的博客,一是增强对设计模式的领悟,二是方便以后的温习。这个系列的博客参考了《设计模式-可复用面向对象软件的基础》中的一些理论和见解,这本书写得真心不错,推荐大家去看一看。另外,如果博客中有什么错误或者不妥之处,希望大家不吝赐教!Now,奔跑吧,兄弟!

什么是设计模式

       “世界上本没有路 走的人多了也便成了路”,正如鲁迅先生所说,一开始其实没有路,走的人多了,便形成了路。设计模式也是如此,一开始并没有设计模式,当一些优秀的设计、架构被人们反复使用、屡试不爽的时候,最终便形成了一种固定的模式。
       
       设计模式最早的概念是由建筑设计大师Christopher Alexander提出,“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心”。虽然他是指的城市建筑模式,但他的思想同样适合于软件设计。书面的来讲,设计模式就是一系列被反复使用、被大家所认同、代码设计经验的总结,通俗的说,你可以把设计模式当作先辈们呕心沥血总结出来的武功秘籍。你只需要在适合的场景下,站在巨人们的肩部上,直接使用合适的模式即可。

设计模式基本要素

       模式名称:一个通俗易懂的名字,方便大家交流和记忆
       问题:这个模式是为了解决什么问题,适用于什么场景,即描述在什么情况下适合使用该设计模式
       解决方案:描述了该设计模式的组成部分,各自的职责以及各部分之间如何协作
       效果:描述了使用该模式达到的效果以及使用该模式应该权衡的问题,优缺点等等

设计模式的分类

  设计模式一共包括23种,这23种设计模式从应用角度被分为三大类:创建型模式、结构型模式、行为型模式。所谓应用角度,就是这一类模式主要是用来完成什么工作的。创建型模式与对象的创建有关,结构型模式是处理类或对象的组合,行为型模式是对类或对象怎样交互、怎样分配职责就行描述。下面一一讲解这三种类型大概干啥,以及三种类型下包括哪些设计模式。

一、创建型模式

       在系统设计中,为了降低耦合度,对象的生成与使用往往是分开的。而对象的创建会消耗不少资源,所以高效合理的创建对象尤为重要,创建型模式便是用来创建对象的,它抽象了对象实例化的过程。共包括5种设计模式

  • 单例模式(singleton)
  • 原型模式(prototype)
  • 建造者模式,也叫生成器模式(builder)
  • 工厂方法模式(factory method)
  • 抽象工厂模式(abstract method)

二、结构型模式

       在完成了对象的创建后,如何设计对象的结构以及对象之间的依赖关系成为了我们关注的焦点,合理的结构、关系设计直接影响到代码的健壮性、可维护性以及耦合性。结构型模式主要就是解决这类问题,共包括7种设计模式

  • 适配器模式(adapter)
  • 桥接模式(bridge)
  • 组成模式(composite)
  • 代理模式(proxy)
  • 装饰模式(decorator)
  • 外观模式(facade)
  • 享元模式(flyweight)

三、行为型模式

  在对象的创建问题、结构问题解决之后,就剩下对象的行为问题了。对象需要哪些行为?各有什么职责?它们之间如何协作才能更加高效?行为型模式就是解决这样的问题,共包括11种设计模式

  • 责任链模式(chain of responsibility)
  • 命令模式(command)
  • 解释器模式(interpreter)
  • 迭代器模式(iterator)
  • 中介者模式(mediator)
  • 备忘录模式(memento)
  • 观察者模式(observer)
  • 状态模式(state)
  • 策略模式(strategy)
  • 模板方法模式(template method)
  • 访问者模式(visitor)

准备工作

       OK!今天对设计模式做了一个大致的介绍,包括什么是设计模式,设计模式有哪些要素以及设计模式的三大分类。后面会正式开始进入设计模式,我们知道,在设计模式中,经常会画该模式相应的类图,所以能读懂类图、画出类图是学习设计模式必不可少的基本功。因此,我提前对UML的类图知识进行了复习与巩固,如果对类图不太清楚的,可以先看我之前UML类图的文章:http://blog.csdn.net/abc374744988/article/details/47135623

0 0
原创粉丝点击