一.定义接口和工厂类
1.定义接口 IProductionFactory
2.实现接口 - 武汉工厂 WuhanFactory
3.实现接口 - 南京工厂 NanjingFactory
4.实现接口 - 长沙工厂 ChangshaFactory
二.
定义生产委托和使用
1.定义生产委托 ProductionDelegate
2.在 Main
函数中创建工厂实例并使用委托
一.定义接口和工厂类
1. 定义接口 IProductionFactory
public interface IProductionFactory
{
void ProduceDuckNeck();
void ProduceDuckWing();
}
解读:
- 定义了一个名为
IProductionFactory
的接口,它代表了一个能够生产产品的工厂。 - 接口中定义了两个方法:
ProduceDuckNeck
和ProduceDuckWing
,分别用于生产鸭脖和鸭翅。
2. 实现接口 - 武汉工厂 WuhanFactory
public class WuhanFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("武汉工厂生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("武汉工厂生产鸭翅");
}
}
解读:
WuhanFactory
类实现了IProductionFactory
接口。- 这个类中的方法分别实现了接口中定义的生产鸭脖和鸭翅的功能。
3. 实现接口 - 南京工厂 NanjingFactory
public class NanjingFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
throw new NotSupportedException("南京工厂不能生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("南京工厂生产鸭翅");
}
}
解读:
NanjingFactory
类也实现了IProductionFactory
接口。- 对于不能生产的鸭脖,通过抛出
NotSupportedException
异常来表示。 - 实现了生产鸭翅的方法。
4. 实现接口 - 长沙工厂 ChangshaFactory
public class ChangshaFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("长沙工厂生产鸭脖");
}
public void ProduceDuckWing()
{
throw new NotSupportedException("长沙工厂不能生产鸭翅");
}
}
解读:
ChangshaFactory
类同样实现了IProductionFactory
接口。- 对于不能生产的鸭翅,通过抛出异常来表示。
- 实现了生产鸭脖的方法。
二、定义生产委托和使用
5. 定义生产委托 ProductionDelegate
public delegate void ProductionDelegate();
解读:
- 定义了一个名为
ProductionDelegate
的委托类型,该委托没有参数,并且没有返回值。 - 这个委托可以用于引用任何没有参数和没有返回值的方法。
6. 在 Main
函数中创建工厂实例并使用委托
static void Main(string[] args)
{
// 创建不同工厂的实例
IProductionFactory wuhanFactory = new WuhanFactory();
IProductionFactory nanjingFactory = new NanjingFactory();
IProductionFactory changshaFactory = new ChangshaFactory();
// 定义生产委托实例并关联方法
ProductionDelegate produceDuckNeckDelegate = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
ProductionDelegate produceDuckWingDelegate = new ProductionDelegate(nanjingFactory.ProduceDuckWing);
// 通过生产委托进行生产
produceDuckNeckDelegate(); // 使用武汉工厂生产鸭脖的能力
produceDuckWingDelegate(); // 使用南京工厂生产鸭翅能力
// 直接调用长沙工厂生产鸭脖的方法
changshaFactory.ProduceDuckNeck();
}
解读:
- 首先,创建了三个工厂实例,分别对应武汉、南京和长沙工厂。
- 然后,定义了两个委托实例
produceDuckNeckDelegate
和produceDuckWingDelegate
,并将它们分别关联到武汉工厂生产鸭脖的方法和南京工厂生产鸭翅的方法上。 - 通过调用这两个委托实例,模拟了产品的生产。
- 最后,直接调用了长沙工厂生产鸭脖的方法作为演示。