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同名“风骨散人”

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

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

『设计模式』不看就亏了的设计模式总结相关推荐

  1. 『读书』可复制的领导力(内含思维导图)

    这本书是樊登老师写的,在看这本书前,听过这本书的语音讲解.樊登老师内部 3 天的领导力培训以及低风险创业的培训,大概对书里的内容已经有了初步的了解,也非常认可里面的一些理论实践,所以就花点时间去看. ...

  2. 设计模式你怎么看?--代理模式

    一 前言 最近持续在地地铁上看设计模式,突然之间就想通了,所有的模式最终都是想将代码解耦,提高重用,封装变化,总结起来就是"面向对象" 而在代码中要面向对象就离不开 抽象类 接口 ...

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

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

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

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

  5. 从锤子手机看『情怀』与有『情怀』的产品设计

    2019独角兽企业重金招聘Python工程师标准>>> 是老罗T2的发布会,我才开始真正接触情怀这个词. 发布会上T2是一款骁龙808的CPU,小米4C在1300-1500之间,锤子 ...

  6. 学习 Java 的历程和体会『写给新手看,欢迎老司机批评和建议』

    转载出处:https://blog.csdn.net/lw_power/article/details/52502698#commentBox Java 基础只能说熟悉,还达不到熟练,更谈不上精通.框 ...

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

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

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

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

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

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

最新文章

  1. 欧洲估值最高的5家人工智能创业公司
  2. xcode 选择configuraftions 打包_分利宝IOS自动化打包
  3. 只需几分钟跟小猫学前端(内含视频教程):nodejs基础之用express、ejs、mongdb建设简单的网站...
  4. PHP header函数大全
  5. 你知道怎么在生产环境下部署tomcat吗?
  6. 第二届大数据科学与工程国际会议在贵阳成功召开
  7. 【转载】Gradle命令行黑魔法
  8. html5 dom 结构,HTML5 DOM扩展
  9. 研发项目wbs分解简单案例_wbs模板(wbs工作分解结构案例)
  10. 泛泰A870L/K/S第三版官方4.4.2原来的系统卡刷机包 (愿自己主动ROOT)
  11. 利用R语言ggplot2包制作金字塔图,展示人口结构数据
  12. 计算机英语专利,计算机专利用英语词汇1500词.pdf
  13. MVVM设计模式的大体布局框架
  14. Source Insight工程导入
  15. 历史名酒元氏益成永——宋曹贡酒
  16. HashMap之链表转红黑树(树化 )-treefyBin方法源码解读(所有涉及到的方法均有详细解读,欢迎指正)
  17. Java的图书商城项目如何添加商品到购物车
  18. 【pandas数据分析】pandas概述
  19. 已解决(Python安装报错)Visit python.org to download an earlier version of Python.
  20. Ansoft HFSS v15.0 win32_64 Full-ISO 2DVD(三维结构电磁场仿真软件)

热门文章

  1. 简单的网络图片加载工具类
  2. ios 请求头设置token_HTTP中的OPTIONS请求
  3. 在Matlab命令窗口中执行,交互式命令操作就是在MATLAB命令行窗口中输入命令并执行。...
  4. 计算机二级证书在学校哪里领取,计算机二级证书去哪里领取
  5. 佟年计算机天才不会打游戏,《亲爱的热爱的》佟年爱得卑微?其实是韩商言,爱得不够勇敢...
  6. 深入理解计算机系统(2.3)---整数的表示方式精解无符号与补码编码(重要)...
  7. iphone NSNotificationCenter
  8. 用Gridview和ObjectDataSource轻松实现自定义分页
  9. DDNS For RHEL5
  10. jquery插件之thickbox