比较

设计模式

常用程度

适用层次

引入时机

结构复杂度

Abstract Factory

比较常用

应用级

设计时

比较复杂

Builder

一般

代码级

编码时

一般

Factory Method

很常用

代码级

编码时

简单

Prototype

不太常用

应用级

编码时、重构时

比较简单

Singleton

很常用

代码级、应用级

设计时、编码时

简单

Adapter

一般

代码级

重构时

一般

Bridge

一般

代码级

设计时、编码时

一般

Composite

比较常用

代码级

编码时、重构时

比较复杂

Decorator

一般

代码级

重构时

比较复杂

Facade

很常用

应用级、构架级

设计时、编码时

简单

Flyweight

不太常用

代码级、应用级

设计时

一般

Proxy

比较常用

应用级、构架级

设计时、编码时

简单

Chain of Resp.

不太常用

应用级、构架级

设计时、编码时

比较复杂

Command

比较常用

应用级

设计时、编码时

比较简单

Interpreter

不太常用

应用级

设计时

比较复杂

Iterator

一般

代码级、应用级

编码时、重构时

比较简单

Mediator

一般

应用级、构架级

编码时、重构时

一般

Memento

一般

代码级

编码时

比较简单

Observer

比较常用

应用级、构架级

设计时、编码时

比较简单

State

一般

应用级

设计时、编码时

一般

Strategy

比较常用

应用级

设计时

一般

Template Method

很常用

代码级

编码时、重构时

简单

Visitor

一般

应用级

设计时

比较复杂

注:常用程度、适用层次、使用时机等基于自己的理解,结构复杂度基于C#语言,表格中所有内容仅供参考。

原则、变化与实现

设计模式

变化

实现

体现的原则

Abstract Factory

产品家族的扩展

封装产品族系列内容的创建

开闭原则

Builder

对象组建的变化

封装对象的组建过程

开闭原则

Factory Method

子类的实例化

对象的创建工作延迟到子类

开闭原则

Prototype

实例化的类

封装对原型的拷贝

依赖倒置原则

Singleton

唯一实例

封装对象产生的个数

Adapter

对象接口的变化

接口的转换

Bridge

对象的多维度变化

分离接口以及实现

开闭原则

Composite

复杂对象接口的统一

统一复杂对象的接口

里氏代换原则

Decorator

对象的组合职责

在稳定接口上扩展

开闭原则

Facade

子系统的高层接口

封装子系统

开闭原则

Flyweight

系统开销的优化

封装对象的获取

Proxy

对象访问的变化

封装对象的访问过程

里氏代换原则

Chain of Resp.

对象的请求过程

封装对象的责任范围

Command

请求的变化

封装行为对对象

开闭原则

Interpreter

领域问题的变化

封装特定领域的变化

Iterator

对象内部集合的变化

封装对象内部集合的使用

单一职责原则

Mediator

对象交互的变化

封装对象间的交互

开闭原则

Memento

状态的辅助保存

封装对象状态的变化

接口隔离原则

Observer

通讯对象的变化

封装对象通知

开闭原则

State

对象状态的变化

封装与状态相关的行为

单一职责原则

Strategy

算法的变化

封装算法

里氏代换原则

Template Method

算法子步骤的变化

封装算法结构

依赖倒置原则

Visitor

对象操作变化

封装对象操作变化

开闭原则

学习

l         掌握设计模式的意图以及解决的问题

l         掌握设计模式所封装的变化点以及优缺点

l         了解设计模式的结构图以及各角色的职责

l         项目中是否应用了设计模式不重要,重要的是设计模式是否正确应用

l         项目中应用的设计模式和GOF设计模式的结构是否一致不重要,重要的是是否从这个结构中得意

l         不管用了还是没有用设计模式,如果违背了原则,就是不恰当的设计

l         没有设计模式是万能的,沉迷于获得一个解决方案的话可能会导致项目结构复杂、代码可读性差、并且造成项目延期

转载于:https://www.cnblogs.com/Jackey_Chen/archive/2008/11/17/1335319.html

GOF23种设计模式(Design Pattern)总结相关推荐

  1. 【Java】Java与GoF-23种设计模式

    文章目录 设计模式概述 GoF-23种设计模式 设计模式的分类 设计模式的原则 设计模式在JDK的部分体现 Singleton Factory Abstract factory Adapter Com ...

  2. GOF23种设计模式在Java中的应用(part 1)

    第二部分:GOF23种设计模式在Java中的应用(part 2) 一.GOF来源及简介 1.1 GOF23种设计模式简介 <Design Patterns: Elements of Reusab ...

  3. GOF23种设计模式在Java中的应用(part 3)

    本文接续:GOF23种设计模式在Java中的应用(part 2) 行为型模式 行为型模式关注系统中对象之间的相互交互.,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共有11种模式. ...

  4. GOF23种设计模式在Java中的应用(part 2)

    本文接续part1:GOF23种设计模式在Java中的应用(part 1) 结构型模式 结构型模式: – 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结 构,用来解决更大的问题. – 分 ...

  5. 设计模式(Design Pattern)详细整理(含思维导图)

    设计模式(Design Pattern) 设计模式(Design pattern)代表了最佳的实践,是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过相当长的一 ...

  6. GOF23种设计模式你知道是什么吗?都有什么作用?

    ​一.GOF简介       GOF是设计模式的经典名著Design Patterns: Elements of Reusable Object-Oriented Software(中译本名为< ...

  7. 【设计模式系列24】GoF23种设计模式总结及软件设计7大原则

    设计模式总结及软件设计七大原则 设计模式系列总览 前言 软件设计7大原则 开闭原则(Open-Closed Principle,OCP) 里氏替换原则(Liskov Substitution Prin ...

  8. RE|GoF23种设计模式-动态代理

    代理模式 定义 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.符合 ...

  9. GOF23种设计模式精解

    创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) 4. Prototype(原型) 5. Singleton( ...

最新文章

  1. 宏基因组合种树第290期—油松
  2. [BZOJ 1112] [POI2008] 砖块Klo 【区间K大】
  3. 后端技术:Java中Spring 和 Spring Boot 有哪些区别,看完你就明白了!
  4. 【UVA - 227】Puzzle (模拟,水题)
  5. h5获取http请求头_java学习之路(2),http协议,request类
  6. [Windows小工具]两款屏幕取色拾色器(免安装,1MB左右大小)
  7. 一个黑客都要学习什么语言
  8. PTA 数据结构与算法题目集(中文)7-38 寻找大富翁(25 分)快排或堆排序
  9. android 私密空间,安卓手机怎么开启隐私空间功能
  10. Windows与Linux之间的文件互传
  11. 不安全的文件上传基本原理(Unsafe file upload)
  12. CCF-CSP 201912-1 报数(python实现)
  13. 阿里云物联网平台-数据解析脚本详解
  14. 2017-4-15,16
  15. 0基础如何自学web前端?如何找工作?
  16. # Ubuntu执行sudo apt-get update提示:E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu focal Release” 没有 Release
  17. Mac 安装zsh 以及powerlevel10k配置
  18. Burp抓不了或者抓不全本地的包
  19. 求生之路2服务器无限刷特感,求生之路2全部联机方法一览_求生之路2怎么联机_牛游戏网...
  20. php行业八卦,Phpwind肖睿哲:与网站主合作信任最重要

热门文章

  1. tf.assign()函数简单解释
  2. gcc: error: CreateProcess: No such file or directory解决方案
  3. DIP第二章习题解答
  4. java date 过时_java Date中方法toLocaleString过时的替代方案
  5. Python之路【第八篇】:Python模块
  6. Win强制删除文件windows批处理强行删除文件
  7. 不同版本的Chrom浏览器对应的ChromDriver的版本
  8. linux SMbus错误
  9. Robotium自动化测试框架实用教程(图)
  10. Bochs调试Linux内核6 - 启动过程调试 - 跳到bootsect引导程序执行