合集-C#23种设计模式
摘要:单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。在单例模式中,类会提供一个静态方法来获取其唯一实例,如果该实例不存在则会创建一个新实例,否则返回已有的实例。 public sealed class Counter { public Counter() { Create
阅读全文
摘要:简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,属于工厂模式的一种。在简单工厂模式中,通过一个工厂类来负责创建对象实例,而客户端无需直接创建对象,只需要通过工厂类来获取所需的对象。 简单工厂模式包含以下几个角色: 工厂类(Factory):负责创建对象实例的类。 产
阅读全文
摘要:工厂方法模式是一种创建型设计模式,用于定义一个创建对象的接口,但将实际创建对象的工作延迟到子类中。这样可以使一个类的实例化延迟到其子类中,从而实现解耦和灵活性。 在工厂方法模式中,通常包含以下几个角色: 抽象工厂(Creator):定义创建对象的接口,通常包含一个抽象的工厂方法,由子类实现具体的对象
阅读全文
摘要:抽象工厂模式是一种创建型设计模式,它提供一个接口用于创建一系列相关或相互依赖对象的工厂,而不需要指定具体的类。这种模式通过提供一个抽象的工厂接口,使得客户端可以创建一系列产品对象而无需关心具体的实现细节。 在抽象工厂模式中,通常会定义一个抽象工厂接口,其中包含多个方法用于创建不同类型的产品。具体的工
阅读全文
摘要:建造者模式是一种创建型设计模式,旨在让你能够创建复杂对象,而无需直接在应用程序中指定其具体类型。通过建造者模式,你可以将对象的构建过程和表示分离,从而使相同的构建过程可以创建不同表示形式的对象。这种模式通常包括以下几个关键组件: 产品(Product):最终要创建的复杂对象。 抽象建造者(Build
阅读全文
摘要:原型模式是一种创建型设计模式,它通过克隆现有对象来创建新对象,而不是通过实例化类来创建。原型模式允许我们创建具有相同属性和方法的对象集合,从而减少了对象的创建成本。 在原型模式中,我们首先创建一个原始对象,然后通过克隆该对象来创建新的对象。这样,我们可以在不重新实例化类的情况下创建多个相似的对象。
阅读全文
摘要:适配器模式是一种结构型设计模式,它通过将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类能够协同工作。 适配器模式有三个主要角色: 目标接口(Target):定义了客户端所期望的接口。 源接口(Adaptee):需要被适配的类或接口。 适配器(Adapter):将
阅读全文
摘要:桥接模式是一种结构型设计模式,它将抽象和实现分离,使它们可以独立地变化。桥接模式通过将实现细节从抽象中分离出来,使得抽象和实现可以独立地进行扩展和修改。 桥接模式有四个主要角色: 抽象类(Abstraction):定义了抽象类的接口,并包含一个对实现类的引用。 实现类接口(Implementor):
阅读全文
摘要:组合模式是一种结构型设计模式,它允许我们将对象组合成树状结构,以表示“整体-部分”的层次结构。组合模式使得客户端可以统一地处理单个对象和组合对象,无需区分它们的差异。 组合模式有三个主要角色: 组件(Component):定义了组合中的对象的公共接口,可以是抽象类或接口,并提供了一些默认的实现。 叶
阅读全文
摘要:装饰模式是一种结构型设计模式,它允许我们在不改变现有对象结构的情况下,动态地向对象添加额外的功能。 装饰模式有四个主要角色: 抽象组件(Component):定义了一个抽象接口,用于被具体组件和具体装饰器实现。 具体组件(Concrete Component):实现了抽象组件接口,是被装饰的对象。
阅读全文
摘要:外观模式是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式通过将客户端与子系统之间的复杂依赖关系解耦,简化了客户端的使用。 外观模式有三个主要角色: 外观(Facade):提供了一个统一的接口,用于访问子系统中的一组接口。外观封装了子系统的复杂性,简化了客户端的使用。
阅读全文
摘要:享元模式是一种结构型设计模式,它通过共享细粒度的对象来最大限度地减少内存使用和对象创建的数量。享元模式通过将共享对象的状态外部化,使得对象可以共享,并提供了一个工厂类来管理共享对象的创建和获取。 享元模式有五个主要角色: 享元接口(Flyweight):定义了共享对象的接口,包含了需要外部化的状态的
阅读全文
摘要:代理模式是一种结构型设计模式,它提供了一个代理对象来控制对其他对象的访问。代理对象可以作为目标对象的代表,以控制对目标对象的访问、限制或增加功能。 代理模式有三个主要角色: 抽象主题(Subject):定义了目标对象和代理对象的公共接口,可以是抽象类或接口。 真实主题(Real Subject):实
阅读全文
摘要:访问者模式是一种行为型设计模式,它允许在不改变被访问对象结构的前提下,定义对这些对象的新操作。访问者模式将操作和对象结构分离,使得可以在不修改对象结构的情况下添加新的操作。 访问者模式有四个主要角色: 抽象访问者(Visitor):定义了访问者可以访问的对象的接口,包含了一系列的访问方法,每个方法对
阅读全文
摘要:模板模式是一种行为型设计模式,它定义了一个抽象类作为算法的骨架,而将一些步骤的具体实现延迟到子类中。模板模式提供了一个统一的算法流程,但允许子类根据需要重写算法的具体步骤。 模板模式有三个主要角色: 抽象类(Abstract Class):定义了算法的骨架,包含了一个模板方法以及一些抽象方法或钩子方
阅读全文
摘要:策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装到独立的类中,使它们可以互相替换。策略模式使得算法可以独立于客户端而变化,客户端可以根据需要选择不同的算法。 策略模式有三个主要角色: 环境类(Context):它持有一个策略对象的引用,并在需要的时候调用策略对象的方法。环境类可以
阅读全文
摘要:状态模式是一种行为型设计模式,它允许一个对象在其内部状态改变时改变其行为。状态模式将对象的行为封装在不同的状态类中,通过改变状态类来改变对象的行为。 状态模式有三个主要角色: 环境类(Context):定义了一个状态对象的引用,并在需要的时候调用状态对象的方法。环境类可以根据内部状态的改变来改变行为
阅读全文
摘要:观察者模式是一种行为型设计模式,它定义了对象之间的一对多依赖关系,使得当一个对象的状态发生改变时,其相关依赖对象会自动收到通知并更新。 观察者模式有四个主要角色: 主题(Subject):定义了观察者的注册、删除和通知方法。主题可以是具体类或接口。 具体主题(Concrete Subject):继承
阅读全文
摘要:备忘录模式是一种行为型设计模式,它可以捕获一个对象的内部状态,并在需要时将对象恢复到之前的状态。备忘录模式通过将对象的状态封装在备忘录对象中,使得可以在不暴露对象内部实现细节的情况下进行状态的保存和还原。 备忘录模式有三个主要角色: 发起人(Originator):负责创建备忘录对象,并可以通过备忘
阅读全文
摘要:中介者模式是一种行为型设计模式,它通过封装一系列对象之间的交互,使得对象之间的通信和协作更加松散和灵活。中介者模式将复杂的交互逻辑集中在中介者对象中,减少了对象之间的直接耦合。 中介者模式有四个主要角色: 抽象中介者(Mediator):定义了中介者对象的接口,用于协调并管理对象之间的交互。可以是抽
阅读全文