单例模式确保一个类只有一个实例,并提供一个全局访问点。C#的静态构造函数可以用来实现这个模式,实用于需要全局状态的场景,比如设置管理。
```csharp public class Singleton { private static readonly Singleton instance = new Singleton();
private Singleton() { }
public static Singleton Instance
{
get { return instance; }
}
复制代码
} ```
2. 工厂模式
工厂模式提供一个创建对象的接口,但由子类决定要实例化的类。C#中的工厂模式可以资助我们创建复杂对象而不暴露对象创建的逻辑,从而提高代码的机动性和可维护性。
```csharp public interface IProduct { void Show(); }
public class ConcreteProductA : IProduct { public void Show() => Console.WriteLine("roduct A"); }
public class ConcreteProductB : IProduct { public void Show() => Console.WriteLine("roduct B"); }
public static class ProductFactory { public static IProduct CreateProduct(string type) { return type switch { "A" => new ConcreteProductA(), "B" => new ConcreteProductB(), _ => throw new ArgumentException("Invalid type") }; } } ```
3. 观察者模式
观察者模式是一种行为模式,用于界说对象之间的一对多依赖关系,以便当一个对象状态发生改变时,所有依赖者都会收到通知并自动更新。C#中的变乱机制是观察者模式的一个很好的实现。
```csharp public class Subject { public event Action Notify;
public void ChangeState()
{
Notify?.Invoke();
}
复制代码
}
public class Observer { public void Update() => Console.WriteLine("State changed!"); } ```
测试驱动开发(TDD)
使用前面提到的NUnit框架,可以轻松实现TDD。下面是一个简单的示例:
csharp [TestFixture] public class CalculatorTests { [Test] public void Add_ShouldReturnCorrectValue() { var calculator = new Calculator(); Assert.AreEqual(4, calculator.Add(2, 2)); } }
代码质量与重构