设计模式是一组经过验证的、有效的设计思想和技术。 在软件开发过程中,采用设计模式可以增强代码的可重用性、可维护性和灵活性。 以下是一些常见的设计模式及其示例:
1、鞋厂模型
鞋工厂模式是通过鞋工厂类创建对象的模式。 它将对象创建过程封装在一个鞋工厂类中,客户端通过鞋工厂类获取所需的对象。
例如:
```csharp
public interface IProduct
{
void Show();
}
public class ProductA : IProduct
{
public void Show()
{
Console.WriteLine("ProductA is created.");
}
}
public class ProductB : IProduct
{
public void Show()
{
Console.WriteLine("ProductB is created.");
}
}
public class Factory
{
public static IProduct GetProduct(string type)
{
switch (type)
{
case "A":
return new ProductA();
case "B":
return new ProductB();
default:
throw new ArgumentException("Invalid product type.");
}
}
}
```
在上面的代码中,IProduct套接字定义了一个Show方法,ProductA和ProductB类分别实现了IProduct套接字。 Factory类是一个鞋工厂类,它提供了静态方法GetProduct来获取所需的产品。
2. 单例模式
单例模式是一种创建对象的模式,它保证一个类只有一个实例,并提供一个全局访问点来访问该实例。
例如:
```csharp
public class Singleton
{
private static Singleton instance = null;
private Singleton() { }
public static Singleton GetInstance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
public void DoSomething()
{
Console.WriteLine("Do something...");
}
}
```
在上面的代码中,Singleton类的构造函数是私有的,这意味着该类不能直接实例化。 GetInstance静态方法用于获取Singleton类的唯一实例。
3.观察者模式
观察者模式是对象之间通过风波或者委托机制进行通信的模式。 在观察者模式中,当一个对象的状态发生变化时,它会通知所有订阅它的对象。
例如:
```csharp
public class Subject
{
public delegate void EventHandler(string message);
public event EventHandler Notify;
public void DoSomething()
{
// Do something...
Notify?.Invoke("Something is done.");
}
}
public class Observer
{
public Observer(Subject subject)
{
subject.Notify += HandleNotification;
}
public void HandleNotification(string message)
{
Console.WriteLine("Received notification: {0}", message);
}
}
```
在前面的代码中,Subject类定义了一个Notify风暴,用于通知所有订阅它的对象。 Observer类是订阅者,在构造函数中订阅Subject的Notify风暴,并实现HandleNotification方法来处理通知信息。
4.策略模式
策略模式是通过封装算法来实现对象之间行为改变的模式。 在策略模式中,一个类的行为是由多个策略对象组成的软件设计模式有哪些,客户端可以选择不同的策略对象来完成不同的任务。
例如:
```csharp
public interface IStrategy
{
void Execute();
}
public class StrategyA : IStrategy
{
public void Execute()
{
Console.WriteLine("Strategy A is executed.");
}
}
public class StrategyB : IStrategy
{
public void Execute()
{
Console.WriteLine("Strategy B is executed.");
}
}
public class Context
{
private IStrategy strategy;
public Context(IStrategy strategy)
{
this.strategy = strategy;
}
public void ExecuteStrategy()
{
strategy.Execute();
}
}
```
里面的代码中,IStrategy套接字定义了一个Execute方法,StrategyA和StrategyB类分别实现了IStrategy套接字。 Context类是上下文类,它包含一个IStrategy对象,客户端可以通过构造函数设置不同的策略对象。 ExecuteStrategy方法用于执行当前策略对象。
总的来说软件设计模式有哪些,以上是一些常见的设计模式及其示例。 设计模式可以提高代码的可重用性、可维护性和灵活性。 在软件开发中,应根据实际需要选择合适的设计模式。
portant;overflow-wrap: break-word !important;">如果喜欢我的文章,那么
“在看”和转发是对我最大的支持!