C#设计模式

雨中漫步 2020-10-30 ⋅ 14 阅读

引言

在开发软件时,我们经常遇到需要设计良好的代码结构和进行重构的情况。设计模式和重构技巧是帮助开发人员更好地组织和优化代码的关键工具。本文将介绍一些常用的 C# 设计模式和重构技巧,并给出相应的例子和解释。

C# 设计模式

1. 单例模式

单例模式是一种保证一个类只能有一个实例的设计模式。在 C# 中,我们可以通过使用静态变量和私有构造函数来实现单例。

例子:

public class Singleton
{
    private static Singleton instance;
    private static readonly object lockObject = new object();

    private Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            lock (lockObject)
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
        }
    }
}

2. 工厂模式

工厂模式是一种通过工厂方法或抽象工厂创建对象的设计模式。在 C# 中,我们可以使用静态工厂方法或抽象工厂接口来实现工厂模式。

例子:

public interface IProduct
{
    void Use();
}

public class ProductA : IProduct
{
    public void Use()
    {
        Console.WriteLine("Using ProductA...");
    }
}

public class ProductB : IProduct
{
    public void Use()
    {
        Console.WriteLine("Using ProductB...");
    }
}

public static class ProductFactory
{
    public static IProduct CreateProduct(string type)
    {
        switch (type)
        {
            case "A":
                return new ProductA();
            case "B":
                return new ProductB();
            default:
                throw new ArgumentException($"Invalid product type: {type}");
        }
    }
}

3. 观察者模式

观察者模式是一种定义对象间一对多的依赖关系,当一个对象状态改变时,其所有依赖对象都会收到通知并自动更新的设计模式。在 C# 中,我们可以使用委托和事件来实现观察者模式。

例子:

public class Subject
{
    public event EventHandler StateChanged;

    private string state;

    public string State
    {
        get { return state; }
        set
        {
            state = value;
            OnStateChanged();
        }
    }

    protected virtual void OnStateChanged()
    {
        StateChanged?.Invoke(this, EventArgs.Empty);
    }
}

public class ObserverA
{
    public void HandleStateChanged(object sender, EventArgs e)
    {
        Console.WriteLine("ObserverA: State changed");
    }
}

public class ObserverB
{
    public void HandleStateChanged(object sender, EventArgs e)
    {
        Console.WriteLine("ObserverB: State changed");
    }
}

C# 重构技巧

1. 提取方法

当某段代码逻辑较为复杂或重复使用时,我们可以将其提取为一个单独的方法,以提高代码的可读性和重用性。

例子:

public class Calculator
{
    public int Add(int a, int b)
    {
        // 复杂的加法逻辑
        return a + b;
    }

    public int Multiply(int a, int b)
    {
        // 复杂的乘法逻辑
        return a * b;
    }

    public int Calculate(int a, int b)
    {
        int sum = Add(a, b);
        int product = Multiply(a, b);
        return sum + product;
    }
}

2. 引入中间变量

当某个表达式较为复杂或过长时,我们可以使用中间变量来分解表达式,以提高代码的可读性。

例子:

public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }

    public int CalculateArea()
    {
        int area = Width * Height;
        return area;
    }
}

3. 删除重复代码

当发现代码中存在重复的逻辑时,我们应该将其抽取为一个单独的方法或使用循环来消除重复代码,以提高代码的可维护性和可扩展性。

例子:

public class NumberCollection
{
    private List<int> numbers;

    public void Add(int number)
    {
        // 重复的判断逻辑
        if (!numbers.Contains(number))
        {
            numbers.Add(number);
        }
    }

    public void Remove(int number)
    {
        // 重复的判断逻辑
        if (numbers.Contains(number))
        {
            numbers.Remove(number);
        }
    }
}

结论

设计模式和重构技巧是提高代码质量和可维护性的重要工具。在 C# 开发中,我们可以使用设计模式和重构技巧来优化代码结构、提高代码可读性,减少代码冗余和重复,从而提高代码的可维护性和可扩展性。

以上是 C# 设计模式和重构技巧的一些介绍和例子,希望对您在开发中有所帮助。如果您有其他问题或疑惑,欢迎留言讨论。谢谢阅读!


全部评论: 0

    我有话说: