C#实现设计模式:掌握八大经典模式,轻松提升代码架构能力
引言
设计模式是软件开发中的一种最佳实践,它可以帮助开发者解决常见的问题,提高代码的可维护性和可扩展性。在C#编程语言中,掌握八大经典设计模式对于提升代码架构能力至关重要。本文将详细介绍这八大设计模式,并通过C#代码示例进行说明。
1. 单例模式(Singleton)
单例模式确保一个类只有一个实例,并提供一个全局访问点。
public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton GetInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 2. 工厂模式(Factory Method)
工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。
public interface IProduct { void Use(); } public class ConcreteProductA : IProduct { public void Use() { Console.WriteLine("使用产品A"); } } public class ConcreteProductB : IProduct { public void Use() { Console.WriteLine("使用产品B"); } } public class Factory { public IProduct CreateProduct(string type) { if (type == "A") { return new ConcreteProductA(); } else if (type == "B") { return new ConcreteProductB(); } return null; } } 3. 抽象工厂模式(Abstract Factory)
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
public interface IProductA { void Use(); } public interface IProductB { void Use(); } public class ConcreteProductA : IProductA { public void Use() { Console.WriteLine("使用产品A"); } } public class ConcreteProductB : IProductB { public void Use() { Console.WriteLine("使用产品B"); } } public interface IFactory { IProductA CreateProductA(); IProductB CreateProductB(); } public class ConcreteFactory : IFactory { public IProductA CreateProductA() { return new ConcreteProductA(); } public IProductB CreateProductB() { return new ConcreteProductB(); } } 4. 建造者模式(Builder)
建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
public class Product { public string PartA { get; set; } public string PartB { get; set; } } public class Builder { public Product Product { get; private set; } public Builder() { Product = new Product(); } public Builder AddPartA(string partA) { Product.PartA = partA; return this; } public Builder AddPartB(string partB) { Product.PartB = partB; return this; } public Product Build() { return Product; } } 5. 适配器模式(Adapter)
适配器模式使对象接口兼容。
public interface ITarget { void Request(); } public class Adaptee { public void SpecificRequest() { Console.WriteLine("特定请求"); } } public class Adapter : ITarget { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } public void Request() { adaptee.SpecificRequest(); } } 6. 桥接模式(Bridge)
桥接模式将抽象部分与实现部分分离,使它们都可以独立地变化。
public interface IAbstraction { void Operation(); } public class RefinedAbstraction : IAbstraction { private Implementor implementor; public RefinedAbstraction(Implementor implementor) { this.implementor = implementor; } public void Operation() { implementor.OperationImpl(); } } public interface IImplementor { void OperationImpl(); } public class ConcreteImplementorA : IImplementor { public void OperationImpl() { Console.WriteLine("实现A"); } } public class ConcreteImplementorB : IImplementor { public void OperationImpl() { Console.WriteLine("实现B"); } } 7. 组合模式(Composite)
组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。
public abstract class Component { public abstract void Operation(); } public class Leaf : Component { public override void Operation() { Console.WriteLine("叶子节点操作"); } } public class Composite : Component { private List<Component> components = new List<Component>(); public void Add(Component component) { components.Add(component); } public override void Operation() { foreach (var component in components) { component.Operation(); } } } 8. 装饰者模式(Decorator)
装饰者模式动态地给一个对象添加一些额外的职责,而不改变其接口。
public abstract class Component { public abstract void Operation(); } public class ConcreteComponent : Component { public override void Operation() { Console.WriteLine("具体组件操作"); } } public class Decorator : Component { private Component component; public Decorator(Component component) { this.component = component; } public override void Operation() { component.Operation(); } } public class ConcreteDecoratorA : Decorator { public ConcreteDecoratorA(Component component) : base(component) { } public override void Operation() { base.Operation(); Console.WriteLine("装饰者A操作"); } } 总结
本文详细介绍了C#中的八大经典设计模式,并通过代码示例进行了说明。掌握这些设计模式对于提升代码架构能力具有重要意义。在实际开发过程中,灵活运用这些模式可以有效地解决常见问题,提高代码质量。
支付宝扫一扫
微信扫一扫