蹊源的Java笔记—设计模式

蹊源的Java笔记—设计模式

前言

我们在开发过程中会根据一些特点的场景去总结出一些常用的解决方法,这些解决方案实际上就是设计模式,本篇博客带领大家去了解一些场景的设计模式。

微服务可参考我的博客:蹊源的Java笔记—微服务

正文

设计模式

设计模式的原则(6种)

  1. 单一职责原则:一个类只能有一个引起它变化的原因,进而提升代码的可重用性。
  2. 里氏代换原则:支持向上转型,子类必须能够替换掉它们的父类型。
  3. 开放-封闭原则:类的设计尽可能抽象化,使代码更容易扩展。
  4. 依赖倒转原则:尽可能使用多态。
  5. 合成/聚合原则:尽可能去使用接口而不是继承的方式。
  6. 迪米特原则:隔离通信,两个类的通信借助第三个类来完成。

创建型模式(5种)

  1. 工厂模式:使用接口或者抽象类来定义一个类,从而新增产品,比如销售品有很多的子销售品。
  2. 抽象工厂模式:所要解决的问题就是在⼀个产品族,存在多个不同类型的产品(Redis集群、操作系统)情况下,接⼝选择的问题。
  3. 建造模式:用于构建复杂的对象,将⼀个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
  4. 原型模式:用于构建占用空间比较大资源的资源,比如一个Excel文件对象要多个模块使用,不同模块要对其进行操作,采用浅拷贝Object.clone()的方式。
  5. 单例模式: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
    在这里插入图片描述

结构型模式(7种)

  1. 适配器模式 :为了适配兼容,比如中台服务,中台需要把各个业务线的各种类型服务做统⼀包装,再对外提供接⼝进⾏使⽤。
  2. 桥接模式: 桥接模式的主要作⽤就是通过将抽象部分与实现部分分离,把多种可匹配的使⽤进⾏组合。说⽩了核⼼实现也就是在A类中含有B类接⼝,通过构造函数传递B类的实现,这个B类就是设计的桥。
  3. 组合模式:组合模式可以运⽤于规则决策树,还可以做服务包装将不同的接⼝进⾏组合配置,对外提供服务能⼒,减少开发成本。
  4. 装饰模式:装饰器的核⼼就是再不改原有类的基础上给类新增功能,比如在类中引入一个实现相同接口的对象,在同一个重写方法中调用对象的该方法。比如:一个理财产品搭售一个子产品,计算金额。
  5. 外观模式:外观模式也叫⻔⾯模式,主要解决的是降低调⽤⽅的使⽤接⼝的复杂逻辑组合。这样调⽤⽅与实际的接⼝提供⽅提供⽅提供了⼀个中间层,⽤于包装逻辑提供API接⼝。GateWay就是外观模式。
  6. 享元模式:主要在于共享通⽤对象,减少内存的使⽤,提升系统的访问效率。⽽这部分共享对象通常⽐较耗费内存或者需要查询⼤量接⼝或者使⽤数据库资源,因此统⼀抽离作为共享对象使⽤。
  7. 代理模式:主要解决的是问题是为某些资源的访问、对象的类的易⽤操作上提供⽅便使⽤的代理服务。比如我们使用Mybatis操作数据库只需要定义接口不需要实现类,其背后就是用到了代理模式。

在这里插入图片描述

行为模式(11种)

  1. 职责链模式:是解决⼀组服务中的先后执⾏处理关系,是工作流审批的基本原理。
  2. 命令模式:将命令封装为一个对象,以数据驱动的⽅式将 命令对象 ,可以使⽤构造函数的⽅式传递给调⽤者。调⽤者再提供相应的实现为命令执⾏提供操作⽅法。
  3. 迭代器模式:以相同的⽅式,遍历不同的数据结构元素,这些数据结构包括; 数组 、 链表 、 树 等,⽽⽤户在使⽤遍历的时候并不需要去关⼼每⼀种数据结构的遍历处理逻辑,从让使⽤变得统⼀易⽤。
  4. 中介者模式:中介者模式要解决的就是复杂功能应⽤之间的重复调⽤,在这中间添加⼀层中介者包装服务,对外提供简单、通⽤、易扩展的服务能⼒。比如,一个类引入两个类对象,可以实现一个聊天群的功能。
  5. 备忘录模式:备忘录模式是以可以恢复或者说回滚,配置、版本、悔棋为核⼼功能的设计模式。
  6. 观察者模式:就是当⼀个⾏为发⽣时传递信息给另外⼀个⽤户接收做出相应的处理,两者之间没有直接的耦合关联,采用控制反转的思想,消息队列的订阅通知就是属于观察者模式。
  7. 状态模式:状态模式描述的是⼀个⾏为下的多种状态变更,⽐如我们最常⻅的⼀个⽹站的⻚⾯,在你登录与不登录下展示的内容是略有差异的( 不登录不能展示个⼈信息 ),⽽这种 登录 与 不登录 就是我们通过改变状态,⽽让整个⾏为发⽣了变化。
  8. 策略模式:在类引入一个对象,做登录操作,比如不同类型用户的登录方式是不一样的, 每一种用户登录时有自己的处理方式,比如写入用户身份(0、1、2 分别代表不同的用户身份),添加不同的 Session 值。
  9. 模板模式:模板模式的核⼼设计思路是通过在,抽象类中定义抽象⽅法的执⾏顺序,并将抽象⽅法设定为只有⼦类实现,但不设计 独⽴访问 的⽅法。 目的是在子类中引入公共行为,规定抽象方法的执行顺序。
  10. 访问者模式 : 在⼀个稳定的数据结构下,例如⽤户信息、雇员信息等,增加易变的业务访问逻辑。,使得不同身份访问同一个方法 获取的结果是不一样的。 比如基金经理查看一个基金和普通用户查看基金所见的内容是不同的。
  11. 解释器模式:可以自定义一个过滤选择器。

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值