1个月连载30个设计模式真实案例,挑战年薪60W不是梦

1个月连载30个设计模式真实案例,挑战年薪60W不是梦

本文所有内容均节选自《设计模式就该这样学》

本文自2021年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的《设计模式》来编写的。

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

分 类解 释举 例创建型设计模式(Creational)这类设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象,这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、单例模式(Singleton Pattern)、原型模式(Prototype Pattern)、建造者模式(Builder Pattern)结构型设计模式(Structural)这类设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得功能的方式代理模式(Proxy Pattern)、门面模式(Facade Pattern)、装饰器模式(Decorator Pattern)、享元模式(Flyweight Pattern)、组合模式(Composite Pattern)、适配器模式(Adapter Pattern)、桥接模式(Bridge Pattern)行为型设计模式(Behavioral)这类设计模式特别关注对象之间的通信模板方法模式(Template Method Pattern)、策略模式(Strategy Pattern)、责任链模式(Chain of Responsibility Pattern)、迭代器模式(Iterator Pattern)、命令模式(Command Pattern)、状态模式(State Pattern)、备忘录模式(Memento Pattern)、中介者模式(Mediator Pattern)、解释器模式(Interpreter Pattern)、观察者模式(Observer Pattern)、访问者模式(Visitor Pattern)

本文是我对“圣经”实践的精华总结,全文内容节选自《设计模式就该这样学》,这是一本可以真正能够落地的“设计模式”之书,也是目前唯一一本结合框架源码如何落地“设计模式”这个角度来理解设计模式的书。本文也将会结合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) >> 彻底说透简单工厂那些你没有关注过的细节2021/11/10已更新Tom弹架构:工厂方法模式(Factory Method Pattern)>> 全面通透深入剖析工厂方法模式2011/11/11已更新Tom弹架构:抽象工厂模式(Abstract Factory Pattern)>> 手写数据库连接池,让抽象工厂不再抽象2021/11/12已更新Tom弹架构:单例模式(Singleton Pattern)>> 这9个单例被破坏的事故现场,你遇到过几个?2021/10/26已更新Tom弹架构:原型模式(Prototype Pattern)>> 一文读懂深克隆与浅克隆的关系2021/11/01已更新Tom弹架构:建造者模式(Builder Pattern)>> 用建造者模式实现一个防SQL注入的ORM框架2021/10/26已更新

5 结构型设计模式

标题备注Tom弹架构:代理模式(Proxy Pattern)>> 从没有人将代理模式分析得如此透彻2021/10/27已更新Tom弹架构:门面模式(Facade Pattern)>> 原来你不知道自己每天都在用门面模式2021/11/13已更新Tom弹架构:装饰器模式(Decorator Pattern)>> 趣谈装饰器模式,让你一辈子不会忘2021/11/01已更新Tom弹架构:享元模式(Flyweight Pattern)>> 就因为把int改成Integer,第2天被辞了2021/11/01已更新Tom弹架构:组合模式(Composite Pattern)>> # 没有性能瓶颈的无限级菜单树应该这样设计2021/11/04已更新Tom弹架构:适配器模式(Adapter Pattern)>> # 如何快速搞定第三方登录且易扩展?2021/11/03已更新Tom弹架构:桥接模式(Bridge Pattern)>> 使用桥接模式设计复杂的消息系统2021/11/08已更新

6 行为型设计模式

标题备注Tom弹架构:委派模式(Delegate Pattern)>> 你以为委派模式很神秘,其实你每天都在用2021/11/09已更新Tom弹架构:模板方法模式(Template Method Pattern)>> 搞懂钩子方法和模板方法,看完这篇就够了2021/11/07已更新Tom弹架构:策略模式(Strategy Pattern)>> 使用策略模式重构电商折扣和支付场景2021/11/05已更新Tom弹架构:责任链模式(Chain of Responsibility Pattern)>> 这才是责任链模式的优雅使用方式2021/10/27已更新Tom弹架构:迭代器模式(Iterator Pattern)>> 手写自定义迭代器,秒懂迭代器底层原理2012/11/15已更新Tom弹架构:命令模式(Command Pattern)>> 使用命令模式重构播放器控制条2021/11/22已更新Tom弹架构:状态模式(State Pattern)>> 彻底搞懂Spring状态机原理,实现订单与物流解耦2021/11/16已更新Tom弹架构:备忘录模式(Memento Pattern)>> 100行代码,轻松搞定文本编辑器中草稿箱2021/11/23已更新Tom弹架构:中介者模式(Mediator Pattern)>> 微信和QQ这么多群,该如何管理好友关系?2021/11/24已更新Tom弹架构:解释器模式(Interpreter Pattern) >> 这个无敌设计,可以解析并运算任意数学表达式2021/11/18已更新Tom弹架构:观察者模式(Observer Pattern) >> 基于Guava API实现异步通知和事件回调2021/11/17已更新Tom弹架构:访问者模式(Visitor Pattern)>> 彻底搞懂访问者模式的静态、动态和伪动态分派2021/11/24已更新

7 新设计模式

标题备注Tom弹架构:对象池模式(Object Pool Pattern)2021/11/25已更新Tom弹架构:规格模式(Specification Pattern)2021/11/25已更新Tom弹架构:空对象模式(Null Object Pattern)2021/11/25已更新Tom弹架构:雇工模式(Employee Pattern)2021/11/25已更新

8 一句话归纳设计模式

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

设计模式一句话归纳目 的生活案例框架源码举例工厂模式(Factory Pattern)产品标准化,
生产更高效封装创建细节实体工厂LoggerFactory、Calender单例模式(Singleton Pattern)世上只有一个我保证独一无二CEOBeanFactory、Runtime原型模式(Prototype Pattern)拔一根猴毛,
吹出千万个高效创建对象克隆ArrayList、PrototypeBean建造者模式(Builder Pattern)高配中配与低配,
想选哪配就哪配开放个性配置步骤选配StringBuilder、
BeanDefinitionBuilder代理模式(Proxy Pattern)没有资源没时间,
得找媒婆来帮忙增强职责媒婆ProxyFactoryBean、
JdkDynamicAopProxy、CglibAopProxy门面模式(Facade Pattern)打开一扇门,
通向全世界统一访问入口前台JdbcUtils、RequestFacade装饰器模式(Decorator Pattern)他大舅他二舅,
都是他舅灵活扩展、
同宗同源煎饼BufferedReader、InputStream享元模式(Flyweight Pattern)优化资源配置,
减少重复浪费共享资源池全国社保联网String、Integer、ObjectPool组合模式(Composite Pattern)人在一起叫团伙,
心在一起叫团队统一整体和个体组织架构树HashMap、SqlNode适配器模式(Adapter Pattern)万能充电器兼容转换电源适配AdvisorAdapter、HandlerAdapter桥接模式(Bridge Pattern)约定优于配置不允许用继承桥DriverManager委派模式(Delegate Pattern)这个需求很简单,
怎么实现我不管只对结果负责授权委托书ClassLoader、
BeanDefinitionParserDelegate模板模式(Template Pattern)流程全部标准化,
需要微调请覆盖逻辑复用把大象装进冰箱JdbcTemplate、HttpServlet策略模式(Strategy Pattern)条条大道通北京,
具体哪条你来定把选择权交给用户选择支付方式Comparator、
InstantiationStrategy责任链模式(Chain of Responsibility Pattern)各人自扫门前雪,
莫管他人瓦上霜解耦处理逻辑踢皮球FilterChain、Pipeline迭代器模式(Iterator Pattern)流水线上坐一天,
每个包裹扫一遍统一对集合的访问方式逐个检票进站Iterator命令模式(Command Pattern)运筹帷幄之中,
决胜千里之外解耦请求和处理遥控器Runnable、TestCase状态模式(State Pattern)状态驱动行为,
行为决定状态绑定状态和行为订单状态跟踪Lifecycle备忘录(Memento Pattern)失足不成千古恨,
想重来时就重来备份,后悔机制草稿箱StateManageableMessageContext中介者模式(Mediator Pattern)联系方式我给你,
怎么搞定我不管统一管理网状资源朋友圈Timer解释器模式(Interpreter Pattern)我想说“方言”,
一切解释权归我实现特定语法解析摩斯密码Pattern、ExpressionParser观察者模式(Observer Pattern)到点就通知我解耦观察者与被观察者闹钟ContextLoaderListener访问者模式(Visitor Pattern)横看成岭侧成峰,
远近高低各不同解耦数据结构和数据操作KPI考核FileVisitor、BeanDefinitionVisitor

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

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

本文计划1个月(即2021年11月30日前)连载完毕,请小伙伴们持续关注本文更新,大家可以先关注和收藏本文,感谢您的支持! 关注『 Tom弹架构 』回复“设计模式”有惊喜。 下一个连载专题预告《Spring核心原理与源码分析》。

本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。关注『 Tom弹架构 』可获取更多技术干货!

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部