Windows程序设计作业-C#实现周黑鸭工厂生产管理
问题:使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。具体要求如下:
- 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
- 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
- 使用委托 ProductionDelegate 定义生产委托。
- 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。
一、系统设计
- 接口层
public interface IProductionFactory
{
void ProduceDuckNeck();
void ProduceDuckWing();
}
这里定义了一个 IProductionFactory
接口,包含两个方法 ProduceDuckNeck()
和 ProduceDuckWing()
,用于表示工厂生产鸭脖和鸭翅的能力。
-
实现层
WuhanFactory
类实现了IProductionFactory
接口,表示武汉工厂,具有生产鸭脖和鸭翅的能力。它实现了接口中定义的两个方法,分别输出信息表示生产的产品。public class WuhanFactory : IProductionFactory { public void ProduceDuckNeck() { Console.WriteLine("武汉工厂生产鸭脖."); } public void ProduceDuckWing() { Console.WriteLine("武汉工厂生产鸭翅."); } }
NanjingFactory
类也实现了IProductionFactory
接口,表示南京工厂,只具有生产鸭翅的能力。在ProduceDuckNeck()
方法中,没有实际处理,因为南京工厂不能生产鸭脖。public class ChangshaFactory : IProductionFactory { public void ProduceDuckNeck() { Console.WriteLine("南京工厂生产鸭翅."); } public void ProduceDuckWing() { // 长沙工厂不能生产鸭翅,这里不做任何处理 } }
ChangshaFactory
类同样实现了IProductionFactory
接口,表示长沙工厂,只具有生产鸭脖的能力。在ProduceDuckWing()
方法中,没有实际处理,因为长沙工厂不能生产鸭翅。public class ChangshaFactory : IProductionFactory { public void ProduceDuckNeck() { Console.WriteLine("长沙工厂生产鸭脖."); } public void ProduceDuckWing() { // 长沙工厂不能生产鸭翅,这里不做任何处理 } }
-
调用层
调用层是这个系统的最上层,它直接面向客户端,接收客户端的请求。
IProductionFactory wuhanFactory = new WuhanFactory(); IProductionFactory nanjingFactory = new NanjingFactory(); IProductionFactory changshaFactory = new ChangshaFactory();
二、代码总览
using System;
// 定义生产工厂接口
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()
{
// 南京工厂不能生产鸭脖,这里不做任何处理
}
public void ProduceDuckWing()
{
Console.WriteLine("南京工厂生产鸭翅.");
}
}
// 长沙工厂,只能生产鸭脖
public class ChangshaFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("长沙工厂生产鸭脖.");
}
public void ProduceDuckWing()
{
// 长沙工厂不能生产鸭翅,这里不做任何处理
}
}
// 定义生产委托
public delegate void ProductionDelegate();
class Program
{
static void Main(string[] args)
{
// 创建不同工厂的实例
IProductionFactory wuhanFactory = new WuhanFactory();
IProductionFactory nanjingFactory = new NanjingFactory();
IProductionFactory changshaFactory = new ChangshaFactory();
// 定义委托实例,并绑定不同工厂的生产方法
ProductionDelegate wuhanProduction = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
wuhanProduction += wuhanFactory.ProduceDuckWing;
ProductionDelegate nanjingProduction = new ProductionDelegate(nanjingFactory.ProduceDuckWing);
ProductionDelegate changshaProduction = new ProductionDelegate(changshaFactory.ProduceDuckNeck);
// 使用委托进行生产
Console.WriteLine("武汉工厂:");
wuhanProduction(); // 调用委托,执行武汉工厂的生产方法
Console.WriteLine("\n南京工厂:");
nanjingProduction(); // 调用委托,执行南京工厂的生产方法
Console.WriteLine("\n长沙工厂:");
changshaProduction(); // 调用委托,执行长沙工厂的生产方法
}
}
三、代码结果
四、总结
这个程序展示了如何利用面向对象的思想和委托来实现对不同工厂生产能力的统一管理和调用。使用接口抽象工厂能力,实现了工厂生产的多态性,使得不同工厂可以通过相同的接口进行统一管理。委托的使用使得生产行为可以被动态绑定和调用,增强了程序的灵活性和可扩展性。整体设计体现了面向对象的设计原则,包括接口隔离、单一职责和依赖倒置等。