#
使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。具体要求如下:
- 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
- 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
- 使用委托 ProductionDelegate 定义生产委托。
- 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产
根据要求不难看出,首先要创建一个接口,其中接口要实现鸭脖与鸭翅的生产,但该接口要实现三个类的不同生产其中三个工厂分别需要鸭脖和鸭翅、鸭脖、鸭翅。若刚开始就定义接口有两个不同的方法,那么当接口接入 WuhanFactory可以执行,而NanjingFactory、ChangshaFactory有且只有一种方法要执行,所以我们只需要在接口 IProductionFactory中定义一种方法DoWork就可以了
interface IProductionFactory
{
public void DoWork();
}
并且建立三个工厂类,使用接口进行连接。
class WuhanFactory: IProductionFactory
{
public void DoWork()
{
Console.WriteLine("生产鸡翅和鸭脖");
}
}
class NanjingFactory: IProductionFactory
{
public void DoWork()
{
Console.WriteLine("生产鸡翅");
}
}
class ChangshaFactory : IProductionFactory
{
public void DoWork()
{
Console.WriteLine("生产鸭脖");
}
}
若想要对工厂的制作进行批量操作那么必然少不了委托与事件了:
首先创建一个委托,其中的函数参数要与我们要进行批量操作的接口保持一致。这样才能进行其事件的批量操作;
public delegate void ProductionDelegate ();
static public event ProductionDelegate Myevent;
最后就是用Main函数来创建实例并且批量化执行事件了。
我们首先要创建接口的实例
因为可以通过接口来调用类中的函数
我们可以实例化委托了
最后将委托一一存入事件中就完成了整个操作
static public void Main(string[] args)
{
IProductionFactory I1= new WuhanFactory();
IProductionFactory I2 = new ChangshaFactory();
IProductionFactory I3 = new NanjingFactory();
ProductionDelegate P1 = I1.DoWork;
ProductionDelegate P2 = I2.DoWork;
ProductionDelegate P3 = I3.DoWork;
Program.Myevent += P1;
Program.Myevent += P2;
Program.Myevent += P3;
Program.Myevent();
}
完整代码如下
public class Program
{
public delegate void ProductionDelegate ();
static public event ProductionDelegate Myevent;
interface IProductionFactory
{
public void DoWork();
}
class WuhanFactory: IProductionFactory
{
public void DoWork()
{
Console.WriteLine("生产鸡翅和鸭脖");
}
}
class NanjingFactory: IProductionFactory
{
public void DoWork()
{
Console.WriteLine("生产鸡翅");
}
}
class ChangshaFactory : IProductionFactory
{
public void DoWork()
{
Console.WriteLine("生产鸭脖");
}
}
static public void Main(string[] args)
{
IProductionFactory I1= new WuhanFactory();
IProductionFactory I2 = new ChangshaFactory();
IProductionFactory I3 = new NanjingFactory();
ProductionDelegate P1 = I1.DoWork;
ProductionDelegate P2 = I2.DoWork;
ProductionDelegate P3 = I3.DoWork;
Program.Myevent += P1;
Program.Myevent += P2;
Program.Myevent += P3;
Program.Myevent();
}
}