java进阶之设计模式概述

设计模式的起源

  1. Christopher Alexander(克里斯托弗.亚历山大),哈佛大学建筑学博士、美国加州大学伯克利分校建筑学教授、加州大学伯克利分校环境结构研究所所长、美国艺术和科学院院士……ChristopherAlexander博士及其研究团队用了约20年的时间,对住宅和周边环境进行了大量的调查研究和资料收集工作,发现人们对舒适住宅和城市环境存在一些共同的认同规律,Christopher Alexander在著作A Pattern Language: Towns,Buildings, Construction中把这些认同规律归纳为253个模式,对每一个模式(Pattern)都从Context(前提条件)、Theme或Problem(目标问题)、 Solution(解决方案)三个方面进行了描述,并给出了从用户需求分析到建筑环境结构设计直至经典实例的过程模型。
  2. 1990年,软件工程界开始关注ChristopherAlexander等在这一住宅、公共建筑与城市规划领域的重大突破。最早将模式的思想引入软件工程方法学的是1991-1992年以“四人组(Gang of Four,简称GoF,分别是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”自称的四位著名软件工程学者,他们在1994年归纳发表了23种在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟。

设计模式的定义

  1. 设计模式的一般定义如下: 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。
  2. 狭义的设计模式是指GoF在《设计模式:可复用面向对象软件的基础》一书中所介绍的23种经典设计模式,不过设计模式并不仅仅只有这23种,随着软件开发技术的发展,越来越多的新模式不断诞生并得以应用。
  3. 虽然GoF设计模式只有23个,但是它们各具特色,每个模式都为某一个可重复的设计问题提供了一套解决方案。根据它们的用途,设计模式可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种,其中创建型模式主要用于描述如何创建对象,结构型模式主要用于
    描述如何实现类或对象的组合,行为型模式主要用于描述类或对象怎样交互以及怎样分配职
    责,有一个设计模式虽然不属于GoF 23种设计模式,但一般在介绍设计模式时都会对它进行说明,它就是简单工厂模式。

常用设计模式一览表:

类型 模式名称 学习难度 使用频率
创建型模式 Creational Pattern 单例模式 Singleton Pattern ★☆☆☆☆ ★★★★☆
创建型模式 Creational Pattern 简单工厂模式 Simple Factory Pattern ★★☆☆☆ ★★★☆☆
创建型模式 Creational Pattern 工厂方法模式 Factory Method Pattern ★★☆☆☆ ★★★★★
创建型模式 Creational Pattern 抽象工厂模式 Abstract Factory Pattern ★★★★☆ ★★★★★
创建型模式 Creational Pattern 原型模式 Prototype Pattern ★★★☆☆ ★★★☆☆
创建型模式 Creational Pattern 建造者模式 Builder Pattern ★★★★☆ ★★☆☆☆
结构型模式 Structural Pattern 适配器模式 Adapter Pattern ★★☆☆☆ ★★★★☆
结构型模式 Structural Pattern 桥接模式 Bridge Pattern ★★★☆☆ ★★★☆☆
结构型模式 Structural Pattern 组合模式 Composite Pattern ★★★☆☆ ★★★★☆
结构型模式 Structural Pattern 装饰模式 Decorator Pattern ★★★☆☆ ★★★☆☆
结构型模式 Structural Pattern 外观模式 Façade Pattern ★☆☆☆☆ ★★★★★
结构型模式 Structural Pattern 享元模式 Flyweight Pattern ★★★★☆ ★☆☆☆☆
结构型模式 Structural Pattern 代理模式 Proxy Pattern ★★★☆☆ ★★★★☆
行为型模式 Behavioral Pattern 职责链模式 Chain of Responsibility Pattern ★★★☆☆ ★★☆☆☆
行为型模式 Behavioral Pattern 命令模式 Command Pattern ★★★☆☆ ★★★★☆
行为型模式 Behavioral Pattern 解释器模式 Interpreter Pattern ★★★★★ ★☆☆☆☆
行为型模式 Behavioral Pattern 迭代器模式 Iterator Pattern ★★★☆☆ ★★★★★
行为型模式 Behavioral Pattern 中介者模式 Mediator Pattern ★★★☆☆ ★★☆☆☆
行为型模式 Behavioral Pattern 备忘录模式 Memento Pattern ★★☆☆☆ ★★☆☆☆
行为型模式 Behavioral Pattern 观察者模式 Observer Pattern ★★★☆☆ ★★★★★
行为型模式 Behavioral Pattern 状态模式 State Pattern ★★★☆☆ ★★★☆☆
行为型模式 Behavioral Pattern 策略模式 Strategy Pattern ★☆☆☆☆ ★★★★☆
行为型模式 Behavioral Pattern 模板方法模式 Template Method Pattern ★★☆☆☆ ★★★☆☆
行为型模式 Behavioral Pattern 访问者模式 Visitor Pattern ★★★★☆ ★☆☆☆☆

设计模式的作用

  1. 设计模式来源众多专家的经验和智慧,它们是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将可以让我们避免做一些重复性的工作,也就是避免重复造轮子。
  2. 设计模式提供了一套通用的设计词汇和一种通用的形式来方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。无论你使用哪种编程语言,做什么类型的项目,甚至你处于一个国际化的开发团队,当面对同一个设计模式时,你和别人的理解并无二异,因为设计模式是跨语言、跨平台、跨应用、跨国界的。
  3. 随着软件规模的日益增大,软件寿命的日益变长,系统的可维护性和可扩展性也越来越重要,许多设计模式将有助于提高系统的灵活性和可扩展性,让我们在不修改或者少修改现有系统的基础上增加、删除或者替换功能模块。

参考文献:Java设计模式(刘伟)

发布了15 篇原创文章 · 获赞 4 · 访问量 1074

猜你喜欢

转载自blog.csdn.net/a15723207292/article/details/94594212