C# 建造者模式(Builder Pattern)
建造者模式(Builder Pattern),也被称为生成器模式,是一种对象构建模式,旨在将复杂对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。这种模式特别适用于构建具有多个组成部分的复杂对象,且这些组成部分的创建和组装方式相对独立。 public class BuilderPatternTest{ public void Main() { var director = new Directo...
C# 策略模式(Strategy Pattern)
策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。 // 策略接口 public interface IStrategy { void Execute(); } // 具体策略A public class ConcreteStrategyA : IStrategy { public void Execute() { Console.WriteLin...
C# 装饰器模式(Decorator Pattern)
装饰器模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 // 组件接口 public interface IComponent { void Operation(); } // 具体组件 public class ConcreteComponent : IComponent { public void Operation() { Console.WriteLine("Co...
C# 工厂模式(Factory Pattern)
工厂模式用于创建对象而不将具体类的代码与客户端代码混合在一起,从而使一个类的实例化延迟到其子类。 示例代码: // 抽象产品 public interface IProduct { void Use(); } // 具体产品A public class ConcreteProductA : IProduct { public void Use() { Console.WriteLine("Using Concr...
.NET 设计模式—命令模式(Command Pattern)
简介 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 角色 发起者(Invoker):这是请求的发起者,它知道如何调用命令对象以执行请求。发起者通常不直接执行请求,而是将请求传递给命令对象。 命令(Command):这是命令模式的核心角色。命令对...
.NET 设计模式—享元模式(Flyweight Pattern)
简介 享元模式(Flyweight Pattern)是一种结构型设计模式,它旨在减少系统中相似对象的内存占用或计算开销,通过共享相同的对象来达到节省资源的目的。 享元模式提供了一种高效地共享对象的方式,从而减少了内存占用和提高了性能,但需要注意的是,使用享元模式会增加系统的复杂性,因为它需要维护共享对象池。 角色 抽象享元角色(IFlyweight):享元对象抽象基类或接口,同时定义出对象的外部状态和内部状态的...
.NET 设计模式—观察者模式(Observer Pattern)
简介 在.NET中,观察者模式是一种设计模式,它允许对象之间进行一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。这种模式在事件驱动的设计中非常常见。 在.NET中实现观察者模式,通常涉及到定义一个抽象的观察者接口和一个可被观察的对象。这个可被观察的对象维护一个观察者的列表,并在状态改变时通知所有观察者。 角色 抽象主题角色(Subject):抽象主题把所有观察者对象的引用...
.NET 设计模式—模板方法模式(Template Method Pattern)
简介 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),是一种行为设计模式,它定义了一个操作中的算法框架,将某些步骤的具体实现留给子类。通过模板方法模式,我们可以在不改变算法结构的情况下,允许子类重新定义某些步骤,从而实现代码复用和扩展。 在软件开发中,我们经常会遇到需要定义一组相似操作的场景。这些操作可能在整体上有着相同的结构,但在细节上有所差异...
.NET 设计模式—迭代器模式(Iterator Pattern)
简介 迭代器模式(Iterator Pattern)是一种行为型设计模式,它允许我们通过提供一种方法来访问聚合对象中的元素,而不需要暴露聚合对象的内部实现。在迭代器模式中,我们通过创建一个迭代器对象来遍历聚合对象中的元素,而不直接访问聚合对象本身。这使得我们可以更加灵活地处理聚合对象,而不需要改变聚合对象的内部结构。 角色 迭代器(Iterator):定义遍历聚合对象的接口,包含访问下一个元素和判断是否已经遍历...
.NET 设计模式—职责链模式(Chain of Responsibility Pattern)
简介 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递, 直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新 组织链和分配责任。 角色 抽象处理器(Handler):定义处理请求的接口,提供一个抽象方法用于处理请求,并定义一个指向后继处理器的引用...