写点什么

收藏本文,相当于收藏一本“设计模式”的书

用户头像
Tom弹架构
关注
发布于: 刚刚

本文节选自《设计模式就该这样学》


本文自 2012 年 10 月 29 日起持续连载,请大家持续关注....


序言


Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang of Four)”,而这本书也就被称为“四人组(或 GoF)”书。他们首次给我们总结出一套软件开发可以反复使用的经验,帮助我们提高代码的可重用性、系统的可维护性等,解决软件开发中的复杂问题。


设计模式已诞生 20 多年,其间相继出版的关于设计模式的经典著作不计其数。如果说 GoF 的《设计模式》是设计模式领域的“圣经”,那么之后出版的各种关于设计模式的书籍可称为“圣经”的“批注版”或者“白话版”。本书正是基于 GoF 的《设计模式》来编写的。


《设计模式》总结的是经验之谈,千万不要死记硬背,生搬硬套。下面来总体预览一下设计模式的分类和总结,如下表所示。

本文是我对“圣经”实践的精华总结,全文内容节选自《设计模式就该这样学》,这是一本可以真正能够落地的“设计模式”之书,也是目前唯一一本结合框架源码如何落地“设计模式”这个角度来理解设计模式的书。本文也将会结合 JDK、Spring、MyBatis、Tomcat、Netty 等经典框架源码展开对设计模式的分析。当然,本文还会结合我多年的“踩坑填坑”经验和“教学答疑”经验,用比“圣经”更深刻、更全面、更通俗、更生动、更有趣、更接地气的方式并且结合真实业务场景分析每种设计模式的优缺点,治愈“设计模式选择困难症”。选设计模式就像相亲选对象,一旦做好了接受 TA 缺点的准备,那 TA 就一定属于你。所以,本文对于日常开发而言更具有指导意义。


Tom 弹架构,只弹干货不掺水,本文所有分享内容均从实战角度出发,不谈概念,只谈实战和应用落地


1 各种设计模式使用频率总结


以下是根据本人的个人经验,对设计模式使用频率的总结,不可作为学术依据,仅供大家参考。因为设计模式的选择还是要依赖具体的业务场景的,每个人接触的业务领域都不一样,自然设计模式的选择也会不一样。


1.1 创建型设计模式


如下图所示,创建型设计模式中使用频率由高到低依次为工厂方法模式、抽象工厂模式、建造者模式、单例模式、原型模式。原型模式一般都有现成的工具类,自己造轮子的情况比较少。



1.2 结构型设计模式


如下图所示,结构型设计模式中使用频率由高到低依次为适配器模式、装饰器模式、代理模式、门面模式、组合模式、享元模式、桥接模式。其中桥接模式一般都有现成的工具类,自己造轮子的情况比较少。



1.3 行为型设计模式


如下图所示,行为型设计模式中使用频率由高到低依次为策略模式、观察者模式、责任链模式、解释器模式、模板方法模式、迭代器模式、中介者模式、命令模式、访问者模式、备忘录模式、状态模式。其中,观察者模式、解释器模式、迭代器模式、中介者模式、命令模式、访问者模式、备忘录模式一般都有现成的工具类,自己造轮子的情况比较少。



下面根据本人多年研究设计模式的经验总结,将压箱干货首次全网发布。如果本文对您有帮助一定要收藏,也欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。关注『 Tom 弹架构 』可获取更多技术干货!


2 为什么一定要学习设计模式


Tom 弹架构:为什么一定要学习设计模式 2021/10/29 已更新


3 七大架构设计原则篇


Tom弹架构:开闭原则(Open-Closed Principle,OCP) 2021/10/21 已更新

Tom弹架构:依赖倒置原则(Dependence Inversion Principle,DIP) 2021/10/22 已更新

Tom弹架构:单一职责原则(Simple Responsibility Principle,SRP)2021/10/23 已更新

Tom弹架构:接口隔离原则(Interface Segregation Principle,ISP) 2021/10/24 已更新

Tom弹架构:迪米特法则(Law of Demeter,LoD) 2021/10/25 已更新

Tom弹架构:里氏替换原则(Liskov Substitution Principle,LSP) 2021/10/26 已更新

Tom弹架构:合成复用原则(Composite/Aggregate Reuse Principle,CARP) 2021/10/27 已更新


目录仅代表更新计划,因精力分配原因不一定按顺序目录顺序连载,计划 1 个月(即 2021 年 11 月 31 日前)连载完毕,请小伙伴们持续关注本文更新,大家可以先关注和收藏本文或者关注『 Tom 弹架构 』更新通知,感谢您的支持!


4 创建型设计模式


Tom 弹架构:简单工厂模式(Simple Factory Pattern) 待更新…

Tom 弹架构:工厂方法模式(Factory Method Pattern) 待更新…

Tom 弹架构:抽象工厂模式(Abstract Factory Pattern) 待更新…

Tom弹架构:单例模式(Singleton Pattern)>> 这9个单例被破坏的事故现场,你遇到过几个? 2021/10/26 已更新

Tom 弹架构:原型模式(Prototype Pattern) 待更新…

Tom弹架构:建造者模式(Builder Pattern)>> 用建造者模式实现一个防SQL注入的ORM框架 2021/10/26 已更新


5 结构型设计模式


Tom弹架构:代理模式(Proxy Pattern)>> 从没有人将代理模式分析得如此透彻 2021/10/27 已更新

Tom 弹架构:门面模式(Facade Pattern)待更新…

Tom 弹架构:装饰器模式(Decorator Pattern)待更新…

Tom 弹架构:享元模式(Flyweight Pattern)待更新…

Tom 弹架构:组合模式(Composite Pattern)待更新…

Tom 弹架构:适配器模式(Adapter Pattern)待更新…

Tom 弹架构:桥接模式(Bridge Pattern)待更新…


6 行为型设计模式


Tom 弹架构:委派模式(Delegate Pattern)待更新…

Tom 弹架构:模板方法模式(Template Method Pattern)待更新…

Tom 弹架构:策略模式(Strategy Pattern)待更新…

Tom弹架构:责任链模式(Chain of Responsibility Pattern)>> 这才是责任链模式的优雅使用方式 2021/10/27 已更新

Tom 弹架构:迭代器模式(Iterator Pattern)待更新…

Tom 弹架构:命令模式(Command Pattern)待更新…

Tom 弹架构:状态模式(State Pattern)待更新…

Tom 弹架构:备忘录模式(Memento Pattern)待更新…

Tom 弹架构:中介者模式(Mediator Pattern)待更新…

Tom 弹架构:解释器模式(Interpreter Pattern)待更新…

Tom 弹架构:观察者模式(Observer Pattern)待更新…

Tom 弹架构:访问者模式(Visitor Pattern)待更新…


7 新设计模式


Tom 弹架构:对象池模式(Object Pool Pattern)待更新…

Tom 弹架构:规格模式(Specification Pattern)待更新…

Tom 弹架构:空对象模式(Null Object Pattern)待更新…

Tom 弹架构:雇工模式(Employee Pattern)待更新…


8 一句话归纳设计模式


各种设计模式对比及编程思想总结如下表所示。



在《设计模式就该这样学》一书中,还有大量的 UML 图及易混淆的设计模式对比案例分析,也欢迎大家关注。


在日常应用中,设计模式从来都不是单个设计模式独立使用的。在实际应用中,通常多个设计模式混合使用,你中有我,我中有你。下图完整地描述了设计模式之间的混用关系,希望对大家有所帮助。



本文计划 1 个月(即 2021 年 11 月 31 日前)连载完毕,请小伙伴们持续关注本文更新,大家可以先关注和收藏本文,感谢您的支持!下一个连载专题预告《Spring 核心原理与源码分析》。


本文为“Tom 弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!

如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。关注微信公众号『 Tom 弹架构 』可获取更多技术干货!


发布于: 刚刚阅读数: 2
用户头像

Tom弹架构

关注

不只做一个技术者,更要做一个思考者 2021.10.22 加入

畅销书作者,代表作品: 《Spring 5核心原理与30个类手写实战》 《Netty 4核心原理与手写RPC框架实战》 《设计模式就该这样学》

评论

发布
暂无评论
收藏本文,相当于收藏一本“设计模式”的书