设计模式 <行为型> | 状态模式 状态模式(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 设计模式 #设计模式 #结构型
设计模式<结构型> | 外观模式 外观模式/门面模式(Facade Pattern)门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。 假设有一个系统 A,提供了 a、b、c、d 四个接口。系统 B 完成某个业务功能,需要调用 A 系统的 a、b、d 接口。利用门面模式,我们提供一个包裹 a、b、d 接口调用的门面接口 x,给系统 B 直接使用 门面模式可以用来封装系统的底层实现,隐藏系统的复杂性,提供一组更 2023-03-02 设计模式 #设计模式 #结构型
设计模式<结构型> | 适配器模式 适配器模式(Adapter Pattern)将不兼容的接口转换成可以兼容的接口,有一个经常被拿来解释它的例子,就是 USB 转接头充当适配器,把两种不兼容的接口,通过转接变得可以一起工作。 结构图: 角色: 目标(Target),定义把其他类转换为哪种接口。 源目标(Adaptee),需要被适配的类。 适配器(Adapter),通过继承或是类关联的方式把源角色转换为目标角色。 适用场景: 封 2023-03-02 设计模式 #设计模式 #结构型
设计模式<结构型> | 装饰器模式 装饰器模式(Proxy Pattern)通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承。它主要的作用是给原始类添加增强功能。这也是判断是否该用装饰器模式的一个重要的依据。除此之外,装饰器模式还有一个特点,那就是可以对原始类嵌套使用多个装饰器。为了满足这个应用场景,在设计的时候,装饰器类需要跟原始类继承相同的抽象类或者接口。 2023-03-01 设计模式 #设计模式 #结构型