使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。具体要求如下:
- 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
- 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
- 使用委托 ProductionDelegate 定义生产委托。
- 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。
对题目进行分析,首先应该定义接口 IProductionFactory
,包含生产鸭脖和鸭翅的方法。接着,我们将创建三个工厂类 WuhanFactory
、NanjingFactory
和 ChangshaFactory
,这些类将实现 IProductionFactory
接口。之后,我们将定义一个委托 ProductionDelegate
来表示生产操作。最后,在 Main
函数中,我们将创建不同工厂的实例,并使用委托来调用它们的生产方法。
using System;
// 定义生产工厂接口
public interface IProductionFactory
{
void ProduceDuckNeck();
void ProduceDuckWing();
}
// 武汉工厂类,实现 IProductionFactory 接口
public class WuhanFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("武汉工厂生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("武汉工厂生产鸭翅");
}
}
// 南京工厂类,实现 IProductionFactory 接口
public class NanjingFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
throw new NotSupportedException("南京工厂不能生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("南京工厂生产鸭翅");
}
}
// 长沙工厂类,实现 IProductionFactory 接口
public class ChangshaFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("长沙工厂生产鸭脖");
}
public void ProduceDuckWing()
{
throw new NotSupportedException("长沙工厂不能生产鸭翅");
}
}
// 定义生产委托
public delegate void ProductionDelegate(IProductionFactory factory);
class Program
{
static void Main(string[] args)
{
// 创建不同工厂实例
IProductionFactory wuhanFactory = new WuhanFactory();
IProductionFactory nanjingFactory = new NanjingFactory();
IProductionFactory changshaFactory = new ChangshaFactory();
// 定义生产委托
ProductionDelegate produceDelegate = new ProductionDelegate(Produce);
// 使用委托进行生产
Console.WriteLine("武汉工厂生产:");
produceDelegate(wuhanFactory); // 生产鸭脖和鸭翅
Console.WriteLine("\n南京工厂生产:");
try
{
produceDelegate(nanjingFactory); // 尝试生产鸭脖和鸭翅,但鸭脖会抛出异常
}
catch (NotSupportedException ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine("\n长沙工厂生产:");
try
{
produceDelegate(changshaFactory); // 尝试生产鸭脖和鸭翅,但鸭翅会抛出异常
}
catch (NotSupportedException ex)
{
Console.WriteLine(ex.Message);
}
}
// 通用生产方法,通过委托调用
static void Produce(IProductionFactory factory)
{
factory.ProduceDuckNeck();
factory.ProduceDuckWing();
}
}
此程序运行结果:
定义了 IProductionFactory
接口和两个工厂类 WuhanFactory
和 NanjingFactory
每个工厂类都实现了 ProduceDuckNeck
和 ProduceDuckWing
方法,南京工厂和长沙工厂对于不支持的生产类型会抛出 NotSupportedException
异常。在 Main
函数中,创建了三个工厂类的实例,并定义了一个委托 ProductionDelegate
,它接受一个 IProductionFactory
类型的参数。还定义了一个静态方法 Produce
,并调用该工厂的 ProduceDuckNeck
和 ProduceDuckWing
方法。通过委托 produceDelegate
,调用 Produce
方法来执行生产操作。对于南京工厂和长沙工厂不支持的生产类型,使用了异常处理来捕获并显示错误信息。