23种设计模式的定义和应用场景-01-创建型模式-C#代码

23种设计模式的定义和应用场景:

1. 创建型模式(共5种)

        单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)

2. 结构型模式(共7种)

        适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰器模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)

3. 行为型模式(共11种)

        责任链模式(Chain of Resposibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Mementor)、观察者模式(Oberver)、状态模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、访问者模式 (Visitor)

1-创建型模式-C#代码

1. 创建型模式

1.1 单例模式 (Singleton)

定义: 确保一个类只有一个实例,并提供一个全局访问点。
应用场景: 数据库连接、日志记录器

public sealed class Singleton
{
    private static Singleton _instance = null;
    private static readonly object _lock = new object();

    private Singleton() { }

    public static Singleton Instance
    {
        get
        {
            lock (_lock)
            {
                if (_instance == null)
                {
                    _instance = new Singleton();
                }
                return _instance;
            }
        }
    }
}
1.2 工厂方法模式 (Factory Method)

定义: 定义一个创建对象的接口,但让子类决定实例化哪个类。
应用场景: 日志记录器、数据库连接工厂。

public interface IProduct
{
    void Operation();
}

public class ConcreteProduct : IProduct
{
    public void Operation()
    {
        Console.WriteLine("ConcreteProduct Operation");
    }
}

public abstract class Creator
{
    public abstract IProduct FactoryMethod();
}

public class ConcreteCreator : Creator
{
    public override IProduct FactoryMethod()
    {
        return new ConcreteProduct();
    }
}
1.3 抽象工厂模式 (Abstract Factory)

定义: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
应用场景: GUI库、跨平台应用。

public interface IAbstractFactory
{
    IProductA CreateProductA();
    IProductB CreateProductB();
}

public class ConcreteFactory1 : IAbstractFactory
{
    public IProductA CreateProductA() => new ProductA1();
    public IProductB CreateProductB() => new ProductB1();
}

public interface IProductA { }
public interface IProductB { }

public class ProductA1 : IProductA { }
public class ProductB1 : IProductB { }
1.4 建造者模式 (Builder)

定义: 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
应用场景: 创建复杂对象,如HTML文档生成器。

public class Product
{
    public List<string> Parts = new List<string>();

    public void Add(string part) => Parts.Add(part);
    public void Show() => Parts.ForEach(Console.WriteLine);
}

public interface IBuilder
{
    void BuildPartA();
    void BuildPartB();
    Product GetResult();
}

public class ConcreteBuilder : IBuilder
{
    private Product _product = new Product();

    public void BuildPartA() => _product.Add("PartA");
    public void BuildPartB() => _product.Add("PartB");
    public Product GetResult() => _product;
}

public class Director
{
    public void Construct(IBuilder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}
1.5 原型模式 (Prototype)

定义: 通过复制现有对象来创建新对象。
应用场景: 对象创建成本高或需要动态配置。

public abstract class Prototype
{
    public abstract Prototype Clone();
}

public class ConcretePrototype : Prototype
{
    public override Prototype Clone() => (Prototype)this.MemberwiseClone();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值