跳至主要內容

[设计模式]-概要

holic-x...大约 6 分钟设计模式设计模式

[设计模式]-概要

​ 设计模式学习笔记,基于优秀的书籍和开发探索整理的个人学习笔记,在后续的学习中相应迭代案例分析和场景应用

参考推荐书籍:

图解设计模式

重学Java模式:项目场景应用案例,便于进一步了解设计模式

REFACTORING.GURU - https://refactoringguru.cn - 图⽂设计模式资料

菜鸟设计模式-RUNOOB.COM

[TOC]

1.设计模式概念

基本概念

​ 设计模式是设计过程中可以反复使用的、可以解决特定问题的设计方法。通过了解一些设计模式的概念,去构建良好的代码结构,提升全局把控能力

设计模式遵循六⼤原则

​ 单⼀职责( ⼀个类和⽅法只做⼀件事 )、⾥⽒替换( 多态,⼦类可扩展⽗类 )、依赖倒置( 细节依赖抽象,下层依赖上层 )、接⼝隔离( 建⽴单⼀接⼝ )、迪⽶特原则( 最少知道,降低耦合 )、开闭原则( 抽象架构,扩展实现 )

设计模式分类

Factory(工厂模式)、Builder(建造模式)、Factory Method (工厂方法模式)、

Prototype(原始模型模式)、Singleton(单例模式)、Facade(门面模式)、

Adapter(适配器模式)、Bridge(桥梁模式)、 Composite(合成 模式)、

Decorator(装饰模式)、Flyweight(享元模式)、Proxy(代理模式)、

Command(命令模式)、 Interpreter(解释器模式)、Visitor(访问者模式)、

Iterator(迭代子模式)、 Mediator(调停者模式)、Memento(备忘录模式)、

Observer(观察者模式)、State(状态模式)、Strategy(策略模式)、

Template Method(模板方法模式)、Chain Of Responsibleity(责任链模式)

IO 流使用的是装饰者模式、按钮监听观察者模式、forEach 遍历 List TreeSet 使用策略模式

设计模式
工厂方法模式Factory Method Pattern
抽象工厂模式Abstract Factory Pattern
建造者模式Builder Pattern
原型模式Prototype Pattern
单例模式Singleton Pattern
适配器模式Adapter Pattern
桥梁模式/桥接模式Bridge Pattern
组合模式Composite Pattern
装饰模式Decorator Pattern
门面模式/外观模式Facade Pattern
享元模式Flyweight Pattern
代理模式Proxy pattern
责任链模式Chain of Responsibility Pattern
命令模式Command Pattern
解释器模式Interpreter Pattern
迭代器模式Iterator Pattern
中介者模式Mediator Pattern
备忘录模式Memento Pattern
观察者模式Observer Pattern
状态模式State Pattern
策略模式Strategy Pattern
模板方法模式Template Method Pattern
访问者模式Visitor Pattern

创建型模式

​ 提供创建对象的机制, 能够提升已有代码的灵活性和可复⽤性

类型说明业务场景实现要点
工厂方法多种类型商品不同皆苦,统一发奖服务搭建场景定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行
抽象工厂替换Redis双集群升级,代理类抽象场景提供⼀个创建⼀系列相关或相互依赖对象的接⼝,⽽⽆需指定它们具体的类
建造者各项装修物料组合套餐选配场景将⼀个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示
原型上机考试多套试,每⼈题⽬和答案乱序排列场景⽤原型实例指定创建对象的种类,并且通过拷⻉这些原型创建新的对象
单例7种单例模式案例
推荐枚举单例模式
保证⼀个类仅有⼀个实例,并提供⼀个访问它的全局访问点

结构型模式

​ 介绍如何将对象和类组装成较⼤的结构, 并同时保持结构的灵活和⾼效

类型说明业务场景实现要点
适配器从多个MQ消息体中,抽取指定字段值场景将⼀个类的接⼝转换成客户希望的另外⼀个接⼝。适配器模式使得原本由于接⼝不兼容⽽不能⼀起⼯作的那些类可以⼀起⼯作
桥接多⽀付渠道(微信、⽀付宝)与多⽀付模式(刷脸、指纹)场景将抽象部分与实现部分分离,使它们都可以独⽴的变化
组合营销差异化⼈群发券,决策树引擎搭建场景将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得⽤户对单个对象和组合对象的使⽤具有⼀致性
装饰者SSO单点登录功能扩展,增加拦截⽤户访问⽅法范围场景动态地给⼀个对象添加⼀些额外的职责。就增加功能来说,装饰器模式相⽐⽣成⼦类更为灵活
外观基于SpringBoot开发⻔⾯模式中间件,统⼀控制接⼝⽩名单场景为⼦系统中的⼀组接⼝提供⼀个⼀致的界⾯,外观模式定义了⼀个⾼层接⼝,这个接⼝使得这⼀⼦系统更加容易使⽤
享元基于Redis秒杀,提供活动与库存信息查询场景运⽤共享技术有效地⽀持⼤量细粒度的对象
代理模拟mybatis-spring中定义DAO接⼝,使⽤代理类⽅式操作数据库原理实现场景为其他对象提供⼀种代理以控制对这个对象的访问

行为模式

​ 负责对象间的高效沟通和职责委派

类型说明业务场景实现要点
责任链模拟618电商⼤促期间,项⽬上线流程多级负责⼈审批场景避免请求发送者与接收者耦合在⼀起,让多个对象都有可能接收请求,将这些对象连接成⼀条链,并且沿着这条链传递请求,直到有对象处理它为⽌
命令模拟⾼档餐厅⼋⼤菜系,⼩⼆点单厨师烹饪场景将⼀个请求封装成⼀个对象,从⽽可以⽤不同的请求对客户进⾏参数化
迭代器模拟公司组织架构树结构关系,深度迭代遍历⼈员信息输出场景提供⼀种⽅法顺序访问⼀个聚合对象中各个元素, ⽽⼜⽆须暴露该对象的内部表示
中介者按照Mybatis原理⼿写ORM框架,给JDBC⽅式操作数据库增加中介者场景⽤⼀个中介对象来封装⼀系列的对象交互,中介者使各对象不需要显式地相互引⽤,从⽽使其耦合松散,⽽且可以独⽴地改变它们之间的交互
备忘录模拟互联⽹系统上线过程中,配置⽂件回滚场景在不破坏封装性的前提下,捕获⼀个对象的内部状态,并在该对象之外保存这个状态
观察者模拟类似⼩客⻋指标摇号过程,监听消息通知⽤户中签场景定义对象间的⼀种⼀对多的依赖关系,当⼀个对象的状态发⽣改变时,所有依赖于它的对象都得到通知并被⾃动更新
状态模拟系统营销活动,状态流程审核发布上线场景允许对象在内部状态发⽣改变时改变它的⾏为,对象看起来好像修改了它的类
策略模拟多种营销类型优惠券,折扣⾦额计算策略场景定义⼀系列的算法,把它们⼀个个封装起来,并且使它们可相互替换
模板方法模拟爬⾍各类电商商品,⽣成营销推⼴海报场景定义⼀个操作中的算法的⻣架,⽽将⼀些步骤延迟到⼦类中。模板⽅法使得⼦类可以不改变⼀个算法的结构即可᯿定义该算法的某些特定步骤
访问者模拟家⻓与校⻓,对学⽣和⽼师的不同视⻆信息的访问场景主要将数据结构与数据操作分离
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3