设计模式 <行为型> | 命令模式 命令模式(Command Pattern)命令模式将请求/命令封装为一个对象,可以使用不同的请求参数化其他对象,并且能够支持请求的排队执行、记录日志、撤销等功能。 结构图: 角色: 发送者(Sender)/触发者(Invoker):负责对请求进行初始化,其中必须包含一个成员变量来存储对于命令对象的引用。 命令(Command):接口通常仅声明一个执行命令的方法。 具体命令(Concrete Co 2023-03-14 设计模式 #设计模式 #行为型
设计模式 <行为型> | 访问者模式 访问者模式(Visitor Pattern)访问者模式就是将对象和对象本身的动作解耦,让操作可以独自变化。 结构图: 角色 抽象访问者(Visitor):为每一个具体元素类声明一个具体访问者的操作。 具体访问者(Concrete Visitor):实现抽象访问者中的操作。可以有多个实现。 抽象元素(Element):接口申明一个 accept 方法表示接受访问者的访问。该方法必须有一个参数被声明 2023-03-13 设计模式 #设计模式 #行为型
设计模式 <行为型> | 迭代器模式 迭代器模式(Iterator Pattern)迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一。集合对象也可以叫容器、聚合对象。 结构图: 角色: 迭代器(Iterator):声明遍历集合所需的一系列操作。 具体迭代器(Concrete Iterators):实现迭代器申明的所有接口。 集合(Collection):声明一个或多个方法来获取与集合兼容的迭代器 2023-03-13 设计模式 #设计模式 #行为型
设计模式 <行为型> | 状态模式 状态模式(State Pattern)状态模式能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 结构图: 角色: 上下文(Context): 保存了对于一个具体状态对象的引用,并会将所有与该状态相关的工作委派给它。上下文通过状态接口与状态对象交互,且会提供一个设置器用于传递新的状态对象。 状态(State):抽象状态类或者接口,定义一个或一组行为,表示该状态下的行 2023-03-10 设计模式 #设计模式 #行为型
设计模式<结构型> | 责任链模式 责任链模式(Chain of Responsibility Pattern)将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。 结构图: 角色: 抽象处理者(Handler):声明了所有具体处理者的通用接口。 该接口通常仅包含单个方法用于请求处理, 有时其还会包含一个设置链上下个处理者的方法。 基 2023-03-09 设计模式 #设计模式 #行为型
设计模式 <行为型> | 策略者模式 策略者模式(Strategy Pattern)定义一系列算法, 并将每种算法分别放入独立的类中,让它们可以互相替换。 结构图:角色: 上下文(Context): 包含策略接口的引用,通过策略接口与该对象进行交流。 策略(Strategy):所有具体策略的通用接口,给出所有具体策略类所需实现的接口。 具体策略(Concrete Strategies):实现了各种算法或行为。 适用场景: 许多仅 2023-03-08 设计模式 #设计模式 #行为型
设计模式 <行为型> | 模版模式 模版模式(Template Method)模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。 算法可以理解为业务逻辑,并不特指数据结构和算法中的算法。这里的算法骨架就是模板,包含算法骨架的方法就是模板方法,这也是模板方法模式名字的由来。 结构图: 角色: 抽象类(AbstractClass): 定 2023-03-07 设计模式 #设计模式 #行为型
设计模式 <行为型> | 观察者模式 观察者模式(Observer Design Pattern)在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知,被依赖的对象叫作被观察者(Observable),依赖的对象叫作观察者(Observer)。 消息队列 事件总线 就是观察者模式。 结构图: 角色: 抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观 2023-03-07 设计模式 #设计模式 #行为型
设计模式 <结构型型> | 享元模式 享元模式(Flyweight Design Pattern)享元模式的意图是复用对象,节省内存,当一个系统中存在大量重复对象的时候,就可以利用享元模式,将对象设计成享元,在内存中只保留一份实例,供多处代码引用,这样可以减少内存中对象的数量,以起到节省内存的目的。 享元模式把一个对象的状态分成内部状态和外部状态,常量数据称内在状态,其他对象只可以读取不可以修改。可以随着环境变动的称外部状态,外部状态 2023-03-06 设计模式 #设计模式 #结构型
设计模式 <结构型> | 组合模式 组合模式(Composite Design Pattern)组合模式将一组对象组织成树形结构,将单个对象和组合对象都看做树中的节点,以统一处理逻辑,并且它利用树形结构的特点,递归地处理每个子树,依次简化代码实现。 结构图: 角色: 抽象节点(Component): 透明模式下把所有行为都再放抽象节点中,让不同层次的结构都具备一致行为 安全组合模式是只规定各个节点的最基础的一致行为,而把组合节点的 2023-03-02 设计模式 #设计模式 #结构型