![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 57
设计模式的学习记录专栏
之诚
期待改变命运
展开
-
备忘录模式 -- 有后悔药可以吃
备忘录模式 这个模式的用途理解很简单. 但是实现却需要分三个角色 状态类 , 和业务高度耦合. 存储业务中的状态, 备忘录类, 包装一时刻状态的类, 可以加上一些附加信息 备忘录存储类, 存储备忘录信息, 以便可以恢复状态, 内部实现可以存数据库, 内存等等地方 当前状态类 这个是当前状态的存储类, 类中含有状态的修改和获取的方法. 还得需要一个 生成备忘录的方法 和一个从备忘录中回复的方法 public class Originator { //具体状态 private Stri原创 2021-09-14 19:59:35 · 271 阅读 · 0 评论 -
命令模式和组合模式 -- 经常一起使用的模式
介绍 组合模式 是一种用来方便操作整体和局部对象的模式, 比如: 你的老板是周扒皮 周扒皮对部门中小王 进行 降薪 操作, 操作对象是小王, 周扒皮也可以对整个不能进行降薪操作, 操作对象是部门 部门就是多个小王的组合, 对于老板来说他不关心部门和小王的区别, 他只要这个操作对象支持降薪就可以了, 而组合模式就是屏蔽这个整体和局部区别使得调用者 方便操作的设计模式 命令模式分为发令者和执行者两个部分, 是一种把复杂操作封装到命令对象中有执行者执行的设计模式, 发令者可以不用关系执行的细节 比如原创 2021-09-13 16:27:19 · 953 阅读 · 0 评论 -
桥接模式 -- 隔离多个变化点
桥接模式, 如果某一段逻辑需要分先后两步来实现, 并且第一步和第二步都各自有很多的实现方式, 如果直接使用ifelse来实现的话,就可能需要N x M 个分支, 如果使用继承的方式, 子类的数量也会爆炸, 此时使用桥接模式是最合适的。 桥接模式需要先把两步操作抽象出来成两个接口, 再把这个两个接口作为调用类的构造参数传入, 这样调用类就不用关心两步操作的具体实现了。 应用场景 支付场景假设, 支付分两步, 第一步选择支付宝或者微信支付方式, 第二步选择密码或者指纹验证方式, 然后才能支付成功。 支付方式原创 2021-09-08 23:15:36 · 302 阅读 · 0 评论 -
建造者模式 -- 复杂对对象的建造过程
对象的初始化很复杂,并不是指构造方法复杂, 是指对象达到可以使用的状态,中间需要执行很复杂的逻辑。比如: 要连接数据库,要打开文件句柄,要加载配置文件, 要请求rpc接口等。 如果把这些逻辑都一股脑的写在构造方法, 或者Init方法中, 逻辑就很多很杂, 建造者模式就派上用场了。 优缺点 优点: 分离复杂的创建逻辑 便于精细控制创建过程 创建过程中的变化也易于扩展, 并且对于调用这可以屏蔽这部分的变化 缺点: 如果有很多复杂类, 会导致过多的建造者类 Builder 建造者模式一般需要一个 Buil原创 2021-09-07 22:39:55 · 320 阅读 · 0 评论 -
工厂模式细分
工厂模式 ,是属于创建型设计模式。 通常是设计一个创建方法的接口, 然后不同的工厂实现这个方法来生成不同的对象。 调用者只要根据需求选择不同的子类来创建对象就可以了, 不用在写众多的if - else 判断逻辑了。 工厂模式细分 简单工厂模式 生产的产品对象有很多种子类 工厂类只有一个, 根据方法的入参来声场不同的对象 使用这种模式 需要你抽象提取出来不同的产品子类 工厂方法模式 生产的产品对象有很多种子类 工厂也有一个接口, 不同的产品工厂都实现这个工厂接口 , 这样不同的子工厂就可以生成不同的原创 2021-09-06 23:35:05 · 263 阅读 · 0 评论