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