设计模式
文章平均质量分 83
设计模式
苹果香蕉西红柿
这个作者很懒,什么都没留下…
展开
-
职责链模式
职责链模式职责链模式概述职责链模式解决的问题角色分析职责链模式优点代码示例源码中的职责链模式使用案例 职责链模式概述 职责链模式解决的问题 案例 : 一个贷款审批案例,假设贷款额度小于5万时由客户负责人审核放款,当贷款额度大于5万小于10万时由项目经理负责审批,当贷款额度大于10万小于20万时由审核团队来审批 问题 : 由谁来审批是通过贷款金额大小来决定的,在传统模式中,通常会使用 if - el...原创 2020-04-02 14:32:51 · 96 阅读 · 0 评论 -
解释器模式
解释器模式解释器模式概述 解释器模式概述 什么是解释器: 定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子,简单来说,就是为了解释一种语言,为这个语言创建的解释器,例如java语言,C语言,各种语言都有对应的编译器进行编译,这个编译器就相当于解释器 ...原创 2020-04-23 21:07:49 · 75 阅读 · 0 评论 -
策略模式
策略模式通过案例了解策略模式策略模式 Strategy 基本介绍策略模式角色分析通过策略模式实现商场售卖策略模式与状态模式的区别JDK 中策略模式的使用案例 通过案例了解策略模式 **案例: **商场售卖,在正常情况下按照正常价格售卖,在节假日时按照打折促销价格售卖,售卖方式就可以看为是一种策略,正常售卖时使用正常策略,节假日时使用节假日策略,例如618打八折,双十一满减等 策略模式 Strate...原创 2020-04-02 02:23:56 · 75 阅读 · 0 评论 -
状态模式
状态模式状态模式 State 概述基本介绍状态模式角色分析示例案例分析案例(不是太严谨,只关注设计模式)代码 状态模式 State 概述 基本介绍 状态模式主要用来解决对象在多种状态之间转换时,不同状态,行为不同的问题,当一个对象的内在状态发生改变时,该对象的行为也会发送相应的改变,在传统模式下通常使用一个字段来标识一个类的状态,然后通过逻辑代码去判断获取相应的状态,执行相应的操作,假设后续更改...原创 2020-04-01 23:06:28 · 216 阅读 · 0 评论 -
中介者模式
中介者模式中介者模式 Mediator 概述示例根据代码分析理解JDK 中 中介者模式的使用案例 中介者模式 Mediator 概述 什么是中介者 中介者又被称为调停者,调节者,协调者举例说明: 例如QQ发送消息给对方,例如发送短信,我们是将消息发送给QQ这个平台,通过这个平台找到接收者,这个平台就相当于中介角色协调者角色,发送消息与接收消息的双方被称为"同事",又被称为被协调者,例如当接收到某个...原创 2020-03-30 22:38:04 · 329 阅读 · 0 评论 -
备忘录模式
备忘录模式备忘录模式 Memento 概述备忘录模式示例 备忘录模式 Memento 概述 什么是备忘录模式 提供一种状态恢复机制,可以保存某个历史时刻的状态,并且状态可以方便的恢复到某个特定的历史时刻,例如数据备份与还原,编辑与撤销,虚拟机生成快照,与根据快照进行恢复 在不破坏封装性的前提下,捕获对象的内部状态,并在该对象之外保存这个状态后续将该对象恢复到原先保存的状态 备忘录模式角色分析 原...原创 2020-03-30 16:08:39 · 130 阅读 · 0 评论 -
观察者模式
观察者模式根据案例分析传统模式中可能存在的问题观察者模式 根据案例分析传统模式中可能存在的问题 案例 调用第三方接口获取天气预报信息,在我方页面上进行展示,考虑问题,第三个的天气信息是定时更新的,怎么获取最新的天气,通过定时方法,定时出发调用第三方接口获取,更新到我方库中进行展示 我方天气展示 //我方天气展示,可以将这个类先理解为Controller class CurrentConditi...原创 2020-03-28 17:57:17 · 104 阅读 · 0 评论 -
迭代器模式
迭代器模式 一. 复习java提供的迭代器二. 迭代器模式概述三. 案例示例 一. 复习java提供的迭代器 在import java.util.Iterator 提供了迭代器接口,该接口被其子类实现并重写抽象方法,主要关注 hashNext(), next(),remove(),方法等 已ArrayList集合为例,该集合继承AbstractList抽象类,在AbstractList中通过一个...原创 2020-03-27 00:54:19 · 109 阅读 · 0 评论 -
访问者模式
访问者模式 Visitor一. 根据实际案例分析传统模式中可能存在的问题二. 访问者模式讲解与示例使用访问者模式修改案例访问者模式角色分析流程图Spring 中访问者模式的使用案例 一. 根据实际案例分析传统模式中可能存在的问题 案例: 现有员工Employee, 管理员工ManagementEmployee, 需求,对每个员工增加奖金,每个员工的等级*100,是奖金的算法,计算每个员工的奖金,...原创 2020-03-27 00:41:16 · 97 阅读 · 0 评论 -
命令模式
命令模式 Template Method命令模式概述 命令模式概述 什么是命令模式: 是一种行为型设计模式,将命令与具体实现进行解耦,将命令封装为对象数据进行传递,命令只关注与"执行",“撤销执行”,而命令具体执行的是什么,有下一层的接收者根据命令对象的不同来决定 命令模式的优点: 将请求与具体行为解耦,提高扩展性方便添加新的命令,可以比较容易的设置组合命令,记录命令, ...原创 2020-03-25 14:24:25 · 105 阅读 · 0 评论 -
模板方法模式
模板方法模式 Template Method根据实际案例解释模板方法模式代码示例模板方法中的钩子方法Spring 中模板方法的使用案例 根据实际案例解释模板方法模式 案例: 生产不同口味的豆浆,现有"红豆",“黄豆”,"绿豆"三种不同口味,虽然口味不同但是生产豆浆的步骤是相同的,选择豆子- - ->添加配料- - - >浸泡豆子- - ->打碎生成豆浆 模板方法模式属于行为型模...原创 2020-03-24 15:57:29 · 67 阅读 · 0 评论 -
代理模式
代理模式代理模式概述静态代理JDK动态代理代码示例Cglib动态代理Spring代理的选择代理模式与其它相关设计模式 代理模式概述 什么是代理模式: 为目标对象提供一种代理,通过代理控制对目标对象的访问,代理对象在发起访问的客户端与需要访问的目标对象之间起到中介的作用 通过案例解释代理对象: 房客通过中介租房子,房客相当于发起访问的客户端,中介相当于代理类,房东相当于被代理的目标对象,房客只与中...原创 2020-03-24 14:00:33 · 97 阅读 · 0 评论 -
享元模式
享元设计模式 Flyweight 根据案例分析传统模式中可能存在的问题享元模式中主要关注的问题代码示例根据实际案例分析享元模式的角色及优点JDK 中享元模式的应用案例 根据案例分析传统模式中可能存在的问题 案例: 生成合同: 不同用户生成不同类型合同,根据合同类型,生成对应的 world 合同模板,获取用户数据填充进合同模板 传统模式: 每个用户生成合同,都会去执行一次生成world合同模板的操作...原创 2020-03-23 17:41:33 · 74 阅读 · 0 评论 -
外观设计模式
外观设计模式 根据实际案例分析外观模式 Facade示例 根据实际案例分析外观模式 Facade 案例: 假设一个放电影功能,在播放电影时,需要放下窗帘,打开空调,打开播放机,打开音响,考虑用户观影时间较长时,提供暂停播放,窗帘上升,关闭音响,关闭空调,当播放完毕后,升起窗帘全部关闭 传统模式下客户端可能需要一个一个的进行调用,客户端调用比较繁琐, 外观模式: 对子系统中的接口进行分组,对一组接...原创 2020-03-23 11:26:17 · 78 阅读 · 0 评论 -
组合模式
组合设计模式 组合模式 Composite Pattern 概述组合模式示例实现思路代码示例JDK 中组合模式的应用案例 组合模式 Composite Pattern 概述 什么是组合模式: 部分与整体的一种层次结构型设计模式,设计单个对象与组合对象使用一致的处理方式,然客户以一致的方式处理个别对象与组合对象 通过实际案例解释组合模式: 例如目录,在目录下面可能还有子目录,在子目录下方可能还有文...原创 2020-03-23 10:06:44 · 69 阅读 · 0 评论 -
装饰者模式
装饰者设计模式 什么是装饰者设计模式 DecoratorPattern根据上面点咖啡进行代码示例JDK 中装饰者设计模式使用案例 什么是装饰者设计模式 DecoratorPattern 在不改变对象的功能结构情况下动态的给该对象添加职责,关注与动态的,动态是可撤销的,提供不同的装饰类,通过不同的行为组合,实现职责添加,比继承方式更加灵活 装饰者设计模式中角色的区分: 被装饰者,装饰者,根据需求,...原创 2020-03-22 14:40:17 · 82 阅读 · 0 评论 -
桥接模式
桥接模式 Bridge 一. 分析传统模式下可能存在的问题二. 桥接模式实现步骤 一. 分析传统模式下可能存在的问题 案例: 根据品牌,与样式操作手机,品牌现有"小米",“华为”,手机样式有"折叠",“滑盖” 在传统模式下根据品牌样式的不同,你可能会创建不同的实体类"小米折叠",“小米滑盖”, “华为折叠”,“华为滑盖” 可能存在的问题: 需要创建比较多的实体类,假设此时要增加一个"全屏"样式,...原创 2020-03-20 16:47:20 · 125 阅读 · 0 评论 -
适配器模式
适配器模式 Adapter Pattern适配器模式概述一. 类适配器模式实现要点代码示例分析类适配器模式二. 对象适配器模式什么是对象适配器代码示例三. 接口适配器模式代码示例SpringMVC框架适配器模式适用案例 适配器模式概述 什么是适配器模式:假设想要调用A类中的某个方法,但是该方法需要一个B类型的参数,而A类中只能拿到A类型的参数,将A类型的参数合理的转换为B类型的参数,这个转换过程...原创 2020-03-20 09:18:48 · 116 阅读 · 0 评论 -
建造者模式
根据案例分析传统模式下可能出现的问题 案例 建造房子,假设可以建造普通房子与高楼两种,建造步骤是: 做地基,做墙,做屋顶 代码示例 普通房子与高楼可以看为是两种不同的产品,抽象出公共的接口或抽象类 //抽象建造者(根据产品的不同在各个产品子类中进行具体实现) abstract class AbstractHouse{ //地基 public abstract void bulidBasic...原创 2020-03-19 14:43:07 · 73 阅读 · 0 评论 -
原型模式
原型模式根据实际案例分析原型模式的优点浅克隆代码示例测试分析深克隆代码示例测试分析原型模式的优点Spring框架中原型模式案例 根据实际案例分析原型模式的优点 在传统模式下,假设需要克隆对象,动态的获取原有对象的值(一个副本不是引用传递,修改克隆出的新对象不会影响原有的),例如:对现有的Persion对象进行克隆, Persion persion = new Persion("小明",18);...原创 2020-03-18 14:04:21 · 63 阅读 · 0 评论 -
工厂方法模式与抽象工厂模式
工厂方法模式工厂方法模式解决的问题工厂方法模式示例案例实现步骤代码示例(比较冗余,只是看设计模式的思想)根据案例分析工厂方法模式 工厂方法模式解决的问题 分析简单工厂模式中的合同签署案例,已产品为维度,创建工厂类,根据信息不同使用工厂类创建不同的产品对象,假设增加维度呢,是不是要创建第二个简单工厂,假设增加是个维度呢?,不容易扩展, 工厂方法模式示例 案例 客户签署合同,产品AAA,产品BBB分别...原创 2020-03-17 23:13:18 · 499 阅读 · 0 评论 -
设计模式概述
设计模式的重要性 以实际工作举例: 给用户开,开发完成后客户增加新的功能,例如原本程序适配两个产品,增加第三个产品(程序可扩展性) 程序开发完成后的后续维护(规范性,可读性) 总结: 高内聚,低耦合,可维护性,可扩展性, 类与类之间的关系 依赖: 类A中用到了类B 则为依赖关系(类B在类中以成员变量,方法形参,方法返回值存在,或在方法中使用到了) 泛化: 继承关系,特殊的依赖 实现: 实现接...原创 2020-03-15 22:53:03 · 69 阅读 · 0 评论 -
简单工厂模式
@TOC 根据案例分析传统模式可能存在的问题 需求分析: 以合同签署为例: 有两个不同的产品"AAA"与"BBB",客户进行合同签署,根据产品的不同,进行不同的业务处理,签署合同 传统模式 创建多个产品抽象出的公共接口 //产品抽象接口 interface ProductInterface{ //获取产品类型 String getProductType(); } 创建产品类...原创 2020-03-15 22:50:43 · 126 阅读 · 0 评论 -
单例设计模式
单例模式一. 单例模式介绍什么是单例模式及优点:使用场景JDK源码分析单例模式二. 单例模式的八种实现方法1. 饿汉式实现步骤分析优缺点代码示例2. 懒汉式一(双重检查式解决线程安全问题)实现步骤分析优缺点代码示例3. 懒汉式二(静态内部类式)原理及优点实现步骤代码示例4. 通过枚举实现单例模式原理代码示例 一. 单例模式介绍 什么是单例模式及优点: 保证某个类在项目中只存在一个实例,并且该类只提...原创 2020-03-15 16:24:24 · 115 阅读 · 0 评论