23种设计模式+额外常用设计模式汇总 (持续更新)

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的
.
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
.
毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
.
我们不只总结GOF所提到的23种设计模式,我们也要总结一些Headfirst提到一些新的设计模式和一些额外再应用中,用的比较普遍的设计模式。文章为总结倾向并且加入个人的思想

设计模式的七大原则:

  1. 单一职责原则SRP(Single Responsibility Principle)
    就一个类而言,应该仅有一个引起它变化的原因。
  2. 开放-关闭原则OCP(Open-CLosed Principle)
    一个软件的实体应该对扩展开放,对修改关闭。
  3. 里氏代换原则(Liskov Substitution Principle)
    子类型必须能够替换他们的基类(父类)。
  4. 依赖倒置原则DIP(Dependence Inversion Principle)
    要依赖于抽象,不要依赖于具体。
  5. 最少知识原则LKP(Least Knowledge Principle)或称 迪米特法则(LoD)
    一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话
  6. 接口隔离原则(ISP)
    使用多个专门的接口比使用单一的功能更多的总接口要好
  7. 合成/聚合原则
    要尽量使用合成/聚合,而不是继承关系达到复用的目的

详细介绍:戳这里

经典23种设计模式分类

前置知识:
1. JAVA反射机制
2. 简单工厂模式
创建型模式 (5种):
1. 工厂方法模式 (Factory Pattern)
2. 抽象工厂模式 (Abstract Factory Pattern)
3. 单例模式 (Singleton Pattern)
4. 建造者模式 (Builder Pattern)
5. 原型模式(Prototype Pattern)

结构型模式 (7种):
1. 适配器模式 (Adapter Pattern)
2. 装饰者模式(Decorator Pattern)
3. 代理模式(Proxy Pattern)
4. 外观模式(门面模式Facade Pattern)
5. 桥接模式 (Bridge)
6. 组合模式(Composite Pattern)
7. 享元模式(Flyweight Pattern)

行为型模式(11种):
1. 策略模式 (Strategy Pattern)
2. 模板方法模式(Template Pattern)
3. 观察者模式(Observer Pattern)
4. 迭代子模式(Iterator Pattern)
5. 责任链模式 (Chain of Responsibility Pattern)
6. 命令模式(Command Pattern)
7. 备忘录模式(Memento Pattern)
8. 状态模式(State Pattern)
9. 访问者模式(Visitor Pattern)
10. 中介者模式(Mediator Pattern)
11. 解释器模式(Interpreter Pattern)

不在23种的额外两类:

并发型模式
1. 发布者/订阅者模式
线程池模式

不属于以上,但也经常使用的:
1. 简单工厂模式
2. MVC设计模式

推荐书籍

没恰饭,这些是我看完或者在看到书,都是一些经典书目了,另外虽有有PDF建议大家还是入手一本。

  • 《Design Patterns: Elements of Reusable Object-Oriented Software》
    由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为"四人组(Gang of Four)就是大名鼎鼎的GOF"

  • 《Head First 设计模式》
    本书作者Eric Freeman,是作家、讲师和技术顾问。完整地涵盖了四人组版本全部23个设计模式,并介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),以及介绍如何进一步学习设计模式,如何发觉新的设计模式等。

  • 《大话设计模式》
    作者是程杰,本书中以情景对话的形式,用多个小故事或编程示例来组织讲解GoF总结的23个设计模式,开创了国内设计模式通俗读物的先河。用C#写的代码, 虽然感觉有些文章故事确实太牵强,但是觉得前两者太枯燥的话,看看这个也是挺不错的。看到作者的代码挺用心的,但凡书中有所提及,都会给你一份很详细的代码,作者的前瞻性也很高,书中预料到了会出现一个系统统一手机软件,果真安卓出现了,这是题外话了,这本书应该是比较早的国内写设计模式那一批,还能流出到现在还有大量受众的书了,C#描述。

  • 《软件设计模式(Java版)》
    作者是程细柱,大学老师写的,就是那种很工整的教学性质的书籍,而且每章之后都会有练习题,很适合大学生,他几乎把所有能想到的东西,都告诉了你,也就是说他都帮你总结了,真的挺用心的老师,采用“任务驱动”的教学方法,根据各种设计模式之间的关系和相似点组织教材目录,对每种模式提出产生背景,并用UML 建模语言分析模式的结构,然后用简单易懂的实例加深学生对该模式的理解。

第一本是让大家知道设计模式的鼻祖,设计模式首次总结,Headfirst也是故事形式,但是观感一般,我学习的时候也借鉴了,所以也放在这里,然后是程杰的大话设计模式,故事生动趣味性高,最后呢就是想用C#去看程杰,想用Java去看程细柱老师的。别说我恰饭了,好吧,程细柱老师也不是我的老师,书也是最近几年才开始发行的,程杰老师的书都流行多少年了,剩下两本也众人皆知,你百度一搜设计模式立马就有,也不用我提。然后我的文章也是跟据上面的书,和自己的想法总结的,可能会有个小部分的雷同,但是那是确实没有比作者能想到更好的语言,其他的都是自己提炼然后总结写出来的,如果作者对我本人的文章有意见或者说我不能用相同的语言描述,我会立刻作出修改。
最后本文的写作,我绝对没有获利一分钱,这个请大家放心白嫖,一个是自己学习以后复习可能会用到,另一个是希望和大家分享一起进步。如果没有基础,或者我的文章一点也看不懂还是建议大家买书,毕竟作者两三百页的书,博主几万个字就写完了,肯定不如作者详细。

写在最后:
Name:风骨散人,目前是一名双非在校大学生,预计考研,热爱编程,热爱技术,喜欢分享,知识无界,希望我的分享可以帮到你!名字的含义:我想有一天我能有能力随心所欲不逾矩,不总是向生活低头,有能力让家人拥有富足的生活而不是为了生计而到处奔波。“世人慌慌张张,不过是图碎银几两。偏偏这碎银几两,能解世间惆怅,可让父母安康,可护幼子成长 …”
文章主要内容:
Python,C++,C语言,JAVA,C#等语言的教程
ACM题解、模板、算法等,主要是数据结构,数学和图论
设计模式,数据库,计算机网络,操作系统,计算机组成原理
Python爬虫、深度学习、机器学习
计算机系408考研的所有专业课内容
目前还在更新中,先关注不迷路。微信公众号,cnblogs(博客园),CSDN同名“风骨散人”

联系博主,侧面的企业微信号就是我平时办公用的,扫码即可联系到本人,嘻嘻。

如果有什么想看的,可以私信我,如果在能力范围内,我会发布相应的博文!
感谢大家的阅读!

『设计模式』HR:不会设计模式,你好意思来面试?(面试必备设计模式)相关推荐

  1. 『设计模式』HR问了我朋友什么是简单工厂模式,竟被质疑是否学过设计模式,是否是计算机专业?

    23种设计模式+额外常用设计模式汇总 (持续更新)越是简单的东西,越是容易被忽略,我来带你们好复习一下! 简单工厂模式 简单工厂模式也被称为静态工厂模式;使用简单工厂模式可以将产品的"消费& ...

  2. 『设计模式』以为是个王者,后来班主任来了!设计模式--二五仔的观察者模式

    23种设计模式+额外常用设计模式汇总 (持续更新) 观察者模式 高中的时候,班里有个两个同学太困了,就钻到桌子地下睡觉,结果被班主任抓包,打断了跟拖把,虽然面临高考还能这么淡定也是个人才. 怎么回事呢 ...

  3. 『设计模式』之小试牛刀

    为了更好的学习设计模式,以及督促自己完成设计模式的学习,现提笔为记. 怎么的,每周至少也要学一个设计模式!!! 恳请大家的监督和不吝赐教,共同学习和进步! 内容主要参考自<设计模式之禅>以 ...

  4. 『设计模式』不看就亏了的设计模式总结

    23种设计模式+额外常用设计模式汇总 (持续更新) 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一 ...

  5. 『数据库』这篇数据库的文章真没人看--数据库完整性

    『数据库』 朴实无华且枯燥的数据库教程–入门必看!(不收藏,真的吃亏了) 文章目录 实体完整性 参照完整性 用户定义的完整性 完整性约束命名子句 域中的完整性限制 触发器 激活触发器 删除触发器 小结 ...

  6. 『数据库』无聊到爆炸的数据库文章--数据库的安全性

    『数据库』 朴实无华且枯燥的数据库教程–入门必看!(不收藏,真的吃亏了) 文章目录 计算机安全性概述 数据库安全性控制 视图机制 审计(Audit) 数据加密 统计数据库安全性 问题的提出 数据库的一 ...

  7. 『数据库』朴实无华且枯燥的数据库文章--关系数据理论

    『数据库』 朴实无华且枯燥的数据库教程–入门必看!(不收藏,真的吃亏了) 文章目录 问题的提出 规范化 数据依赖的公理系统 模式的分解 小结 问题的提出 一.概念回顾 关系:描述实体.属性.实体间的联 ...

  8. 『数据库』朴实无华的数据库多表查询,连接查询、笛卡尔积

    『数据库』 朴实无华且枯燥的数据库教程–入门必看!(不收藏,真的吃亏了) 文章目录 一.交 二.并 三.差 四.笛卡尔积 五.连接查询 一.交 (会用到连接运算,固定写法,连接运算在下面不用着急看) ...

  9. 『数据库』朴实无华的数据库绪论

    『数据库』 朴实无华且枯燥的数据库教程–入门必看!(不收藏,真的吃亏了) 文章目录 数据库系统概述 数据模型 概念模型 数据库系统结构 数据库系统的组成 数据库系统概述 一.四个基本概念 1.数据(D ...

最新文章

  1. CDMA模块上网设置的过程
  2. 监督分类空白处也被分类了_用于半监督短文本分类的异构图注意网络
  3. (深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack)(C/C++存储类型总结)(内存管理)
  4. CodeForces - 1323C Unusual Competitions(贪心)
  5. 面经 | 我是如何拿到阿里offer的?附面试题+视频
  6. ReactNative调研结果
  7. Spring Security 入门(1-3-2)Spring Security - http元素 - intercept-url配置
  8. charles测试学习 手机端连接电脑进行抓包分析
  9. 数据库中的完整性约束及实例
  10. 微信公众号调起微信支付
  11. DONET中常用的一些快捷键收集。
  12. 前阿里P10赵海平被打3.25后离职,加入字节跳动,职级或为4+
  13. Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled
  14. 软件测试怎么学比较快
  15. mysql 告警日志_错误日志监控报警脚本
  16. 【温故而知新】计算机408之计算机网络速记
  17. css display:flex详解
  18. 【刷机】LG G2 能进入recovery但是不能进入新系统,can't open file ,G2刷TOT
  19. 如何轻松拥有属于自己的淘宝店手机客户端?
  20. android复制粘贴功能

热门文章

  1. python彩票结果分析_即将放弃Python 2.7的不止有Numpy,还有pandas和这些工具
  2. 安装HCL模拟器遇到的问题标题文章
  3. 20145240 《Java程序设计》第四次实验报告
  4. 写文件头的算法流程及C代码实现
  5. 端口镜像NIDS技术(sniffer抓包)
  6. struct __POSITION{}和ASSERT
  7. asp.net小技巧:摆脱路径的困扰(二)
  8. python字符串的特点_python小白之路(特性语法三之字符串)
  9. python的输出函数_Python输出函数print()总结(python print())
  10. AspectJ 中的pointcut 语法