什么是设计模式

为解决某一类普遍存在的问题而提供的一种解决方案;

分类及定义

创建型模式(5)

1、原型模式:通过复制一个已存在对象来生成一个新对象,被复制的对象称为原型;详情...

2、单例模式:一个类只有一个全局实例;详情...

3、生成器模式:对复杂对象的创建过程进行抽象,相同的创建步骤,不一样的创建过程实现,生成不同表示的对象;详情...

4、工厂方法模式:具体的工厂对象负责生产具体的产品对象;详情...

5、抽象工厂模式:就是对一组具有相同主题的工厂进行封装;详情...

简单工厂模式:一个工厂方法,依据传入的参数,生成对应的具体产品对象;//不属于gof-23 详情...

结构型模式(7)

1、装饰模式:通过关联机制给类增加行为,其行为的扩展由修饰对象来决定;详情...

2、享元模式:大量细粒度对象共享复用;详情...

3、桥接模式:将对象的行为抽象为接口,作为抽象类的成员属性在抽象层进行组合;详情...

4、组合模式:树形结构的实现,用于描述“整体-部分”的关系;详情...

5、外观模式:在子系统中的接口之上定义一个更高层次的接口,方便使用子系统中的接口;详情...

6、代理模式:通过代理对象间接控制并访问目标对象的方法;详情...

7、适配器模式:适配器是将一种接口改造成另外一种接口的一个包装类;详情...

行为型模式(11)

1、解释器模式:定义一些语法规则,然后定义一个解析器去解析该语法;详情...

2、访问者模式:在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升;详情...

3、备忘录模式:保存对象的某个状态并可以恢复到该状态;详情...

4、中介者模式:对象之间通过中介者对象进行交互,而不是直接交互;详情...

5、模板方法模式:使用了JAVA的继承机制,在抽象类中定义一个模板方法,该方法引用了若干个抽象方法(由子类实现)或具体方法;详情...

6、责任链模式:为请求创建一个接收者对象的链,每个接收者包含对另一个接收者的引用,当某个接受者不能处理该请求时,将请求转给下一个接受者;详情...

7、命令模式:将请求封装成命令对象,请求的具体执行由命令接收者执行;详情...

8、状态模式:一个对象的行为根据其内部状态的改变自动变化;详情...

9、策略模式:对象的行为,在不同的环境下,有不同的实现;详情...

10、迭代器模式:提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。详情...

11、观察者模式:一对多的关系,又叫发布-订阅模式,即一个对象的状态发生变化,所有依赖它的对象能够知道该变化并自动更新;详情...

涉及的相关的设计原则

  • 单一职责原则
  • 里氏替换原则
  • 依赖倒置原则
  • 接口隔离原则
  • 迪米特法则
  • 开闭原则

使用频率排序

创建型模式(5)

工厂方法模式:★★★★★

抽象工厂模式:★★★★★

单例模式:★★★★☆

简单工厂模式:★★★★☆            //不属于gof-23

原型模式:★★★☆☆

生成器模式:★★☆☆☆

结构型模式(7)

外观模式:★★★★★

代理模式:★★★★☆

组合模式:★★★★☆

适配器模式:★★★★☆

桥接模式:★★★☆☆

装饰模式:★★★☆☆

享元模式:★☆☆☆☆

行为型模式(11)

迭代器模式:★★★★★

观察者模式:★★★★★

命令模式:★★★★☆

策略模式:★★★★☆

模板方法模式:★★★☆☆

责任链模式:★★★☆☆

状态模式:★★★☆☆

备忘录模式:★★☆☆☆

中介者模式:★★☆☆☆

解释器模式:★☆☆☆☆

访问者模式:★☆☆☆☆

另外,网上看到一张图片,总结的挺好的

图片来自:链接

【设计模式】GoF设计模式学习总结的更多相关文章

  1. GOF设计模式快速学习

    这段时间,学习状态比较一般,空闲时基本都在打游戏,和研究如何打好游戏,终于通过戏命师烬制霸LOL,玩笑了.为了和"学习"之间的友谊小船不翻,决定对以往学习过的GOF设计模式做一个简 ...

  2. GOF设计模式特烦恼

    这段时间,学习状态比较一般,空闲时基本都在打游戏,和研究如何打好游戏,终于通过戏命师烬制霸LOL,玩笑了.为了和"学习"之间的友谊小船不翻,决定对以往学习过的GOF设计模式做一个简 ...

  3. GoF设计模式三作者15年后再谈模式

    Erich Gamma, Richard Helm, 和 Ralph Johnson在GoF设计模式发表15年以后,再谈模式,另外一位作者,也是四色原型的发明者Peter已经过世. 提问者:如今有85 ...

  4. 在GoF设计模式

    在GoF设计模式中,结构型模式有: 1.适配器模式 Adapter   适配器模式是将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.   ...

  5. 猿取向的规划设计模式 ——GoF《设计模式》阅读摘要(零)

    这个话题是很奇怪,设计模式是引导程序的设计不是模仿什么软件?呃.我的意思是,这是 面"对象"相对的设计模式. 我曾见过有人写<给妻子解释设计模式>,这样的把计算机中的思 ...

  6. GoF设计模式 - 概述

    掌握编程语言仅仅意味着掌握了如何给计算机"下命令",而到底要计算机如何去做,怎么指挥,则是另一个问题--如何编程.设计模式是一套程序员的"武功套路",它教我们如 ...

  7. OOAD-设计模式(二)之GRASP模式与GOF设计模式概述

    一.GRASP模式(通用责任分配软件模式)概述 1.1.理解责任 1)什么是责任 责任是类间的一种合约或义务,也可以理解成一个业务功能,包括行为.数据.对象的创建等 知道责任——表示知道什么 行为责任 ...

  8. 8.5 GOF设计模式四: 观察者模式Observer

    GOF设计模式四: 观察者模式Observer  现实中遇到的问题  当有许多不同的客户都对同一数据源感兴趣,对相同的数据有不同的处理方式,该如 何解决?5.1 定义: 观察者模式  观察者模式 ...

  9. 8.4 GOF设计模式三: 外观模式 Facade

    GOF设计模式三: 外观模式 Facade  “现有系统”功能强大.复杂,开发“新系统”需要用到其中一部分,但又要增加一部 分新功能,该怎么办?4.1 Facade Pattern: Key Fea ...

  10. 8.3 GOF设计模式二: 适配器模式 Adapter

    GOF设计模式二: 适配器模式 Adapter  为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式  SingleTon的三个关键点  ...

随机推荐

  1. JavaScript进阶之路——认识和使用Promise,重构你的Js代码

    一转眼,这2015年上半年就过去了,差不多一个月没有写博客了,"罪过罪过"啊~~.进入了七月份,也就意味着我们上半年苦逼的单身生活结束了,从此刻起,我们要打起十二分的精神,开始下半 ...

  2. 匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置

    0x00 前言: 匹夫在日常和别人交流的时候,常常会发现一旦讨论涉及到“类型”,话题的热度就会立马升温,因为很多似是而非.或者片面的概念常常被人们当做是全面和正确的答案.加之最近在园子看到有人翻译的& ...

  3. 提高代码质量系列之二:重构小技巧——if篇

    前言: if,相信是童鞋们使用的最频繁的关键字了,而且很多时候,我们使用的if都是在无意识的状态下随手而为.键入if,两下回车(我使用了resharper,可以自动编排if的格式),再信手写下我们需要 ...

  4. 压缩javascript文件方法

    写在前面的话:正式部署前端的时候,javascript文件一般需要压缩,并生成相应的sourcemap文件,对于一些小型的项目开发,这里提供一个简单的办法. ======正文开始====== 1.下载 ...

  5. 数据库中树形列表(以easyui的tree为例)

    构造一棵easyui前台框架的一个树形列表为例后台框架是spring MVC+JPA. 先看一下数据库是怎么建的,怎么存放的数据 下面是实体类 /** * 部门类 用户所属部门(这里的部门是一个相对抽 ...

  6. eclipse 突然 一直在loading descriptor for XXX (XXX为工程名)Cancel Requested

    问题: eclipse 启动后,啥也不干,就一直在loading descriptor for XXX (XXX为工程名),,其他什么操作都不能操作. 如下图所示,保存文件也无法保存.  这个怎么办? ...

  7. python实现网络爬虫下载天涯论坛帖子

    最近发现天涯论坛是一个挺有意思的网站,有各种乱七八糟的帖子足以填补无聊时候的空虚感,但是相当不爽的一件事就是天涯的分页模式下想连贯的把楼主的内容看完实在是太心酸了,一个999页的帖子,百分之九十都是无 ...

  8. 聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer

    跨平台是ASP.NET Core一个显著的特性,而KestrelServer是目前微软推出了唯一一个能够真正跨平台的Server.KestrelServer利用一个名为KestrelEngine的网络 ...

  9. zeptojs-跑马灯效果

    去年的时候了解学习了一下zeptojs,因为是移动js框架嘛还是必须要学习下的,里面封装的方法和jquery很类似,但是底层原理当然是不同的,这里展示的就是一个跑马灯效果,直接上代码和效果图: 样式不 ...

  10. Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结

    2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...