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

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

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

如果有什么想看的,可以私信我,如果在能力范围内,我会发布相应的博文!
感谢大家的阅读!😘你的点赞、收藏、关注是对我最大的鼓励!

风骨散人Chiam CSDN认证博客专家 拖更专业户????
大学僧,考研狗,没上岸,ACM退役选手。
名字的含义:希望可以通过努力,能力让家人拥有富足的生活而不是为了生计而到处奔波。“世人慌慌张张,不过是图碎银几两。偏偏这碎银几两,能解世间惆怅,可让父母安康,可护幼子成长 …”Chiam是 -am爱 China中国
文章主要内容:
Python,C++,C语言,JAVA,C#等语言的教程,
ACM题解、模板、算法等,主要是数据结构,数学和图论
设计模式,数据库,计算机网络,操作系统,计算机组成原理,Python爬虫、深度学习、机器学学习,
计算机系408考研的所有专业课内容。
目前还在更新中,博客园,微信公众号同名“风骨散人”,关注公众号可获软件大礼包
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 点我我会动 设计师:上身试试 返回首页