摘要: 23种设计模式的总结 三种类型 创建型 结构型 行为型 阅读全文
posted @ 2022-06-20 14:05 Shengjie 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 解释器模式 应用场景 编译器, 规则引擎, 正则表达式 定义 三要素: 语言 语法 语法解释器 定义: 解释器模式为语言定义语法,并定义一个解释器处理语法. 实现(比较灵活,不固定) 定义一个表达式接口,接口里有一个解析方法interpret().多个表达式都实现自这个接口. 表达式的解析也写在表达 阅读全文
posted @ 2022-06-17 11:45 Shengjie 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 命令模式 定义 将请求封装成对象 使用不同的请求参数化其他对象(将请求依赖注入到其他对象) 支持请求的排队执行, 记录日志, 撤销等附加功能 实现 将函数封装成对象. 应用场景 控制命令的执行,比如异步, 延迟, 排队执行命令, 撤销重做命令, 给命令记录日志等. 设计模型由两部分组成: 应用场景 阅读全文
posted @ 2022-06-15 13:03 Shengjie 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 访问者模式 定义: Allows for one or more operation to be applied to a set of objects at runtime, decoupling the operations from the object structure. 允许一个或者多个 阅读全文
posted @ 2022-06-11 18:03 Shengjie 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式 作用:遍历集合对象. 迭代器模式包含两部分: 容器 容器接口 容器实现类 容器迭代器 迭代器接口 迭代器实现类 设计思路和实现 迭代器中需要定义hasNext(), currentItem(), next()三个方法. 待遍历的容器对象通过依赖注入传递到迭代器类中.容器通过iterato 阅读全文
posted @ 2022-06-08 11:05 Shengjie 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 状态模式 三个组成部分: 状态 事件(转移条件) 动作 实现方式: 分支逻辑法.使用if-else或者switch-case进行状态的转移.这种方式不推荐,可读性和可维护性差. 查表法.将各种状态梳理后写进二维数组,然后通过查询数组进行状态的转移.推荐,可读性和可维护性高.但是这个方法也有局限性,仅 阅读全文
posted @ 2022-06-07 19:07 Shengjie 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 职责链模式 定义 多个处理器依次处理一个请求,A处理器处理请求,然后给到B处理器处理请求,然后给到C处理器处理请求,继续往后走,直到所有处理器都执行完成。最终,一个请求依次经过了A、B、C等所有处理器的处理,每个处理器各自承担不同的处理职责。 有两种定义: (1)如果处理器链上的某个处理器能处理这个 阅读全文
posted @ 2022-06-02 18:52 Shengjie 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 策略模式 定义一组算法类,将每个算法都封装成单独的类,这些类可以相互替换。算法的变化不影响调用者的使用。 1.定义 定义一个策略接口,所有的策略类都基于这个接口实现,重写接口的方法。 2.创建 通过类型(type)判断创建哪个策略。这部分逻辑可以用工厂类写。 (1)如果策略是无状态的: 在工厂类里创 阅读全文
posted @ 2022-05-31 16:00 Shengjie 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 模板模式 解决的问题 复用和扩展 复用:将不变的逻辑放到父类的模板方法里,可变的逻辑放到子类中实现。然后统一调用父类的模板方法去执行。也就是说所有的子类可以复用父类中的模板方法。 扩展(框架的扩展性):类似于控制反转。 控制反转:抽象出一个类,类里面一部分是固定的逻辑,一部分是接口,留给子类实现。不 阅读全文
posted @ 2022-05-29 09:25 Shengjie 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 观察者模式 三种设计模式主要解决的问题: 1, 创建型:解决“对象的创建” 2, 结构型:解决“类或对象的组合或组装” 3, 行为型:解决“类或对象之间的交互” 定义 在对象间定义一个一对多的依赖,当一个对象状态发生改变,所有依赖的对象都会自动收到通知。由于该模式比较抽象,所以不同的应用场景和需求, 阅读全文
posted @ 2022-05-27 09:01 Shengjie 阅读(20) 评论(0) 推荐(0) 编辑