java进阶之设计模式概述

本文深入探讨了设计模式的起源、定义及作用,介绍了由Christopher Alexander开创的模式思想,以及GoF四人组归纳的23种经典设计模式,涵盖了创建型、结构型和行为型三大类别,强调了设计模式在软件开发中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式的起源

  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设计模式(刘伟)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农先锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值