概念 将多个处理请求的对象连接成一条链,每个对象在链上依次处理请求,直到有对象处理完请求为止 应用场景 遇到某个请求需要经过多个处理环节,这些步骤放在一个类里处理,逻辑会非常混乱,并且修改起来也非常…
概念 允许对象在内部状态变化时,改变它的行为,看起来就像是对象本身发生了变化一样 应用场景 有些对象的行为依赖于内部状态的变化,使用状态模式,每个状态维护一个独立的类,使得对象状态切换更加清晰。避免使…
概念 提供一种方法,顺序访问一个集合对象内部的元素,而又不暴露集合的内部结构。 应用场景 需要通过迭代器封装遍历逻辑时 基本结构 1)迭代器接口(Iterator):定义访问和遍历元素的方法 2…
概念 在一个方法中定义好算法的整体流程结构,把一些具体的步骤延迟到子类中去实现 应用场景 一些业务场景整体流程详细,只有几个步骤有区别。使用模板方法模式能够避免编写相同流程中重复的代码 基本结构 1)…
概念 在不破坏对象封装性的前提下,捕获一个对象的内部状态,并在将来需要的时候能够恢复这个状态 应用场景 遇到需要“恢复历史状态”的场景。如果每次都让对象自己暴露内部属性,自己去记录变化,不仅会破坏…
概念 通过引入一个中介对象,来封装对象之间复杂的交互关系。各个对象之间不再直接引用或依赖彼此,而是统一通过中介者来进行通信和协作 应用场景 当业务逻辑复杂,大量对象直接持有其他对象的引用时,一旦某一对…
概念 将请求封装为对象,从而使得不同的请求可以被参数化、排队、记录日志,并支持撤销和恢复操作。通过这种方式,命令的发送者与接收者之间实现了解耦 应用场景 在需要解耦请求发送者和接收者时 命令不需要立刻…
概念 定义一系列算法,把它们一个个封装起来,并且让它们可以互相替换 应用场景 遇到需要根据不同条件选择不同行为的场景时,使用策略模式可以将每一种策略独立封装成单独的类,后续如果要新增、修改策略,只…
概念 当一个对象状态发生变化时,自动通知所有依赖于它的对象,并自动更新它们 应用场景 通常用于自动发布通知的场景,使用观察者模式发布通知后会自动通知所有的需要通知的用户 同时实现将“发布通知”的代码与…
概念 通过共享对象,减少系统中对象的数量,从而节省内存,提高性能 应用场景 当需要创建大量相似对象时,使用享元模式可以将对象中相同的部分提取出来作为共享对象,保留特殊的不可共享部分,减少了重复创建相同…