设计模式 <结构型> | 组合模式 组合模式(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 设计模式 #设计模式 #结构型
设计模式<结构型> | 桥接模式 桥接模式(Bridge Pattern)桥接模式也叫桥梁模式,将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。 结构图: 角色: 抽象类(Abstract):定义抽象类,提供高层控制逻辑,并包含一个对实现对象的引用。 扩展抽象类(Refined Abstraction):扩展Abstract中的接口定义。通常情况下它不再是抽象类而是具体类,实现了在 A 2023-02-28 设计模式 #设计模式 #结构型
设计模式<结构型> | 代理模式 代理模式(Proxy Pattern)在不改变原始类(或叫被代理类)的情况下,通过引入代理类来给原始类附加功能。一般情况下,让代理类和原始类实现同样的接口。但是,如果原始类并没有定义接口,并且原始类代码并不是自己开发维护的。在这种情况下,可以通过让代理类继承原始类的方法来实现代理模式。 结构图: 角色: 原始主题(RealSubject):也就是需要被代理的类。 抽象主题(ISubject):真 2023-02-28 设计模式 #设计模式 #结构型
设计模式<创建型> | 原型模式 原型模式(Prototype Pattern)如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,就可以可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式,来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式,简称原型模式。 结构图: 角色: 原型对象(prototype):需要进行复制的对象。 适用场景: 需 2023-02-27 设计模式 #设计模式 #创建型
设计模式<创建型> | 生成器模式 生成器模式(Builder pattern)将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。解决构造函数过多或者过于复杂。可以把构造函数里面的约束条件的校验使用建造者模式放到 builder 类中去。 结构图: 角色: 产品(Product):需要创建的产品,是最终生成的对象。 抽象生成器(IBuilder):声明产品构造步骤接口。 具体生成器(Concrete Build 2023-02-23 设计模式 #设计模式 #创建型
设计模式<创建型> | 工厂模式 简单工厂(Factory Pattern)简单工厂(静态工厂)可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个工厂类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 结构图: 角色: 简单工厂(FactoryProduct):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。 抽象产品(IProduct): 2023-02-21 设计模式 #设计模式 #创建型
设计模式 <创建型> | 单例模式 单例模式(Singleton)单例设计模式(Singleton Design Pattern),一个类在只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模。 结构图: 适用场景: 无状态的工具类可以使用单例模式。 角色: 单例类(Singleton):负责生成单例并返回 优点: 可以保证对象的唯一性,用于解决资源竞争等场景。 缺点: oop支持不友好 2023-02-21 设计模式 #设计模式 #创建型