耗时两月!20+真实案例场景、近300页、18W字,这份【Java设计模式实践指南】已然成神,堪称经典

什么是设计模式?这个问题我问过的面试者不下于数十次,回答五花八门。

在我看来,模式就是经验,设计模式就是设计经验,有了这些经验,我们就能在特定情况下使用特定的设计、组合设计,这样可以大大节省我们的设计时间,提高工作效率。

作为一个工作已久的老码农,经历的系统架构设计也算不少,接下来,我会把工作中用到的一些架构方面的设计模式总结成了一个文档分享给大家,望大家少走弯路。

创建者模式(五种)

  • 工厂方法模式

工厂模式又称工厂方法模式,是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。

  • 抽象工厂模式

抽象工厂模式与工厂方法模式虽然主要意图都是为了解决,接口选择问题。但在实现上,抽象工厂是一个中心工厂,创建其他工厂的模式。

  • 建造者模式

建造者模式所完成的内容就是通过将多个简单对象通过-步步的组装构建出一个复杂对象的过程。

  • 原型模式

原型模式主要解决的问题就是创建重复对象,而这部分对象内容本身比较复杂,生成过程可能从库或者RPC接口中获取数据的耗时较长,因此采用克隆的方式节省时间。

  • 单例模式

单例模式可以说是整个设计中最简单的模式之-,而且这种方式即使在没有看设计模式相关资料也会常用在编码开发中。

结构型模式(七种)

  • 适配器模式

适配器模式的主要作用就是把原本不兼容的接口,通过适配修改做到统一。使得用户方便使用,就像我们提到的万能充、数据线、MAC笔记本的转换头、出国旅游买个插座等等,他们都是为了适配各种不同的接口,做的兼容。。

  • 桥接模式

桥接模式的主要作用就是通过将抽象部分与实现部分分离,把多种可匹配的使用进行组合。说白了核心实现也就是在A类中含有B类接口,通过构造函数传递B类的实现,这个B类就是设计的桥。

  • 组合模式

从上图可以看到这有点像螺丝和螺母,通过一堆的链接组织出一棵结构树。通过把相似对象(也可以称作是方法)组合成一组可被调用的结构树对象的设计思路叫做组合模式。

  • 装饰器模式

初看上图感觉装饰器模式有点像俄罗斯套娃、某众汽车,而装饰器的核心就是在不改原有类的基础上给类新增功能。不改变原有类,可能有的小伙伴会想到继承、AOP切面,当然这些方式都可以实现,但是使用装饰器模式会是另外一种思路更为灵活,可以避免继承导致的子类过多,也可以避免AOP带来的复杂性。

  • 外观模式(门面模式)

外观模式也叫门面模式,主要解决的是降低调用方的使用接口的复杂逻辑组合。这样调用方与实际的接口提供方提供方提供了一个中间层,用于包装逻辑提供API接口。有些时候外观模式也被用在中间件对服务中的通用性复杂逻辑进行中间件层包装,让使用方可以只关心业务开发。

  • 享元模式

享元模式,主要在于共享通用对象,减少内存的使用,提升系统的访问效率。而这部分共享对象通常比较耗费内存或者需要查询大量接口或者使用数据库资源,因此统一抽离作为共享对象使用。

  • 代理模式

代理模式有点像老大和小弟,也有点像分销商。主要解决的是问题是为某些资源的访问、对象的类的易用操作上提供方便使用的代理服务。而这种设计思想的模式经常会出现在我们的系统中,或者你用到过的组件中,它们都提供给你一种非常简单易用的方式控制原本你需要编写很多代码的进行使用的服务类。

行为模式(十种)

  • 责任链模式

责任链模式的核心是解决一组服务中的先后执行处理关系,就有点像你没钱花了,需要家庭财务支出审批,10块钱以下找闺女审批,100块钱先闺女审批在媳妇审批。你可以理解想象成当你要跳槽的时候被安排的明明白白的被各个领导签字放行。

  • 命令模式

命令模式是行为模式中的一种,以数据驱动的方式将命令对象,可以使用构造函数的方式传递给调用者。调用者再提供相应的实现为命令执行提供操作方法。可能会感觉这部分有一些饶, 可以通过对代码的实现进行理解,再通过实操来熟练。

  • 迭代器模式

迭代器模式的优点是可以让我们以相同的方式,遍历不同的数据结构元素,这些数据结构包括:数组、链表、树等,而用户在使用遍历的时候并不需要去关心每一种数据结构的遍历处理逻辑,从让使用变得统一易用。

  • 中介者模式

中介者模式要解决的就是复杂功能应用之间的重复调用,在这中间添加一层中介者包装服务,对外提供简单、通用、易扩展的服务能力。

  • 备忘录模式

备忘录模式是以可以恢复或者说回滚,配置、版本、悔棋为核心功能的设计模式,而这种设计模式属于行为模式。在功能实现上是以不破坏原对象为基础增加备忘录操作类,记录原对象的行为从而实现备忘录模式。

  • 观察者模式

简单来讲观察者模式,就是当一个行为发生时传递信息给另外一个用户接收做出相应的处理,两者之
间没有直接的耦合关联。例如:狙击手、李云龙。

  • 状态模式

状态模式描述的是一个行为下的多种状态变更,比如我们最常见的一个网站的页面,在你登录与不登录下展示的内容是略有差异的(不登录不能展示个人信息),而这种登录与不登录就是我们通过改变状态,而让整个行为发生了变化。

  • 策略模式

策略模式是一种行为模式,也是替代大量ifelse的利器。它所能帮你解决的是场景,一般是具有同类可替代的行为逻辑算法场景。比如:不同类型的交易方式(信用卡、支付宝、微信)、生成唯一ID策略(UUID、DB自增、DB+Redis、雪花算法、Leaf)算法等,都可以使用策略模式进行行为包装,供给外部使用。

  • 模板模式

模板模式的核心设计思路是通过在,抽象类中定义抽象方法的执行顺序,并将抽象方法设定为只有子类实现,但不设计独立访问的方法。简单说也就是把你安排的明明白白的。

  • 访问者模式

访问者要解决的核心事项是,在一个稳定的数据结构下,例如用户信息、雇员信息等,增加易变的业务访问逻辑。为了增强扩展性,将这两部分的业务解耦的一种设计模式。

【Java设计模式实践指南】以互联网真实场景实践开发为基础,每一个模块的学习都会涉及到1-3个对应的案例工程,这在文档的每个模块中都有所提到,在学习的过程中可以参考对照即可。

学习完成后进行知识点的总结,以及思考这样的设计模式在自己的业务场景中需要如何使用。觉得有帮助的码友请不要吝啬你的点赞,你的支持就是我的动力。

快速入手通道:(点这里)下载!诚意满满!!!

Java面试精选题、架构实战文档传送门:https://docs.qq.com/doc/DRW1nUkdhZG5zeGVi

猜你喜欢

转载自blog.csdn.net/weixin_45784983/article/details/108171568