题目:
使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。具体要求如下:
1,定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
2,定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口IProductionFactory,用于具体的生产工厂。
3,使用委托 ProductionDelegate 定义生产委托。
4,在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产
基本思路:
首先定义一个接口IPrpductionFactory,其中接口体内是生产鸭脖和鸭翅的函数声明。然后再上述要求定义武汉工厂WuhanFactory、南京工厂NanjingFactory、长沙工厂ChangshaFactory并继承接口IProductionFactory,接着在定义生产委托ProductionDelegate ,最后再写主函数部分,其中包括创建委托实例,向委托实例注册方法。
代码实现:
定义一个接口IProductionFactory:
public interface IProductionFactory
{
void ProduceDuckNeck();//生产鸭脖
void ProduceDuckWing();//生产鸭翅
}//定义接口
定义类 WuhanFactory:
public class WuhanFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("武汉工厂生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("武汉工厂生产鸭翅");
}
}
定义类NanjingFactory:
public class NanjingFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
throw new NotSupportedException("南京工厂不能生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("南京工厂生产鸭翅");
}
}
定义类ChangshaFactory:
public class ChangshaFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("长沙工厂生产鸭脖");
}
public void ProduceDuckWing()
{
throw new NotSupportedException("长沙工厂不能生产鸭翅");
}
}
定义生产委托:
public delegate void ProductionDelegate();//定义生产委托
委托的使用一共有三个步骤:
1,声明委托类型
2,创建委托实例
3,向委托实例注册方法
主函数部分:
internal class Program
{
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();
// 更改委托的绑定,使其指向长沙工厂生产鸭脖的方法
produceDuckNeckDelegate = new ProductionDelegate(changshaFactory.ProduceDuckNeck);
produceDuckNeckDelegate();
Console.ReadLine();
}
}
}
代码运行结果:
完整代码:
using System;
namespace 周黑鸭
{
public interface IProductionFactory
{
void ProduceDuckNeck();
void ProduceDuckWing();
}
public class WuhanFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("武汉工厂生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("武汉工厂生产鸭翅");
}
}
public class NanjingFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
throw new NotSupportedException("南京工厂不能生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("南京工厂生产鸭翅");
}
}
//定义ChangshaFactory类并继承接口IProductionFactory
public class ChangshaFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("长沙工厂生产鸭脖");
}
public void ProduceDuckWing()
{
throw new NotSupportedException("长沙工厂不能生产鸭翅");
}
}
public delegate void ProductionDelegate();
internal class Program
{
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();
produceDuckNeckDelegate = new ProductionDelegate(changshaFactory.ProduceDuckNeck);
produceDuckNeckDelegate();
Console.ReadLine();
}
}
}
小结:
通过本题,我们深入了解了C#中类,接口以及委托等相关知识。接口的使用减少了代码的编写量,提高了开发效率。通过接口,委托我们实现了在工厂所能生产的产品不同的条件下,周黑鸭对产品生产的统一管理,为周黑鸭产品生产的管理提供了便利。