本文所有内容均节选自《设计模式就该这样学》
序言
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) | 这类设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式 | 门面模式(Facade Pattern)、装饰器模式(Decorator Pattern)、享元模式(Flyweight Pattern)、组合模式(Composite Pattern)、适配器模式(Adapter Pattern)、桥接模式(Bridge Pattern) |
行为型设计模式(Behavioral) | 这类设计模式特别关注对象之间的通信 | 模板方法模式(Template Method Pattern)、策略模式(Strategy Pattern)、责任链模式(Chain of Responsibility Pattern)、 |
本文是我对“圣经”实践的精华总结,全文内容节选自《设计模式就该这样学》,这是一本可以真正能够落地的“设计模式”之书,也是目前唯一一本结合框架源码如何落地“设计模式”这个角度来理解设计模式的书。本文也将会结合JDK、Spring、MyBatis、Tomcat、Netty等经典框架源码展开对设计模式的分析。当然,本文还会结合我多年的“踩坑填坑”经验和“教学答疑”经验,用比“圣经”更深刻、更全面、更通俗、更生动、更有趣、更接地气的方式并且结合真实业务场景分析每种设计模式的优缺点,治愈“设计模式选择困难症”。选设计模式就像相亲选对象,一旦做好了接受TA缺点的准备,那TA就一定属于你。所以,本文对于日常开发而言更具有指导意义。
Tom弹架构,只弹干货不掺水,本文所有分享内容均从实战角度出发,不谈概念,只谈实战和应用落地
1 各种设计模式使用频率总结
以下是根据本人的个人经验,对设计模式使用频率的总结,不可作为学术依据,仅供大家参考。因为设计模式的选择还是要依赖具体的业务场景的,每个人接触的业务领域都不一样,自然设计模式的选择也会不一样。
1.1 创建型设计模式
如下图所示,创建型设计模式中使用频率由高到低依次为工厂方法模式、抽象工厂模式、建造者模式、单例模式、原型模式。原型模式一般都有现成的工具类,自己造轮子的情况比较少。
1.2 结构型设计模式
如下图所示,结构型设计模式中使用频率由高到低依次为适配器模式、装饰器模式、代理模式、门面模式、组合模式、享元模式、桥接模式。其中桥接模式一般都有现成的工具类,自己造轮子的情况比较少。
1.3 行为型设计模式
如下图所示,行为型设计模式中使用频率由高到低依次为策略模式、观察者模式、责任链模式、解释器模式、模板方法模式、迭代器模式、中介者模式、命令模式、访问者模式、备忘录模式、状态模式。其中,观察者模式、解释器模式、迭代器模式、中介者模式、命令模式、访问者模式、备忘录模式一般都有现成的工具类,自己造轮子的情况比较少。
下面根据本人多年研究设计模式的经验总结,将压箱干货首次全网发布。如果本文对您有帮助一定要收藏,也欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。
2 为什么一定要学习设计模式
标题 | 备注 |
---|---|
2021/10/29已更新 |
3 七大架构设计原则篇
标题 | 备注 |
---|---|
2021/10/21已更新 | |
2021/10/22已更新 | |
2021/10/23已更新 | |