题 目:使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。
要求:
- 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
- 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
- 使用委托 ProductionDelegate 定义生产委托。
- 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。
实现:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace windows课程作业1
{
internal class Program
{
// 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法
interface IProductionFactory
{
void ProduceDuckNeck();
void ProduceDuckWing();
}
// 定义类 WuhanFactory 实现接口 IProductionFactory
class WuhanFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("Wuhan factory produces duck neck.");
}
public void ProduceDuckWing()
{
Console.WriteLine("Wuhan factory produces duck wing.");
}
}
// 定义类 NanjingFactory 实现接口 IProductionFactory
class NanjingFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
// 南京工厂无法生产鸭脖
Console.WriteLine("Nanjing factory cannot produce duck neck.");
}
public void ProduceDuckWing()
{
Console.WriteLine("Nanjing factory produces duck wing.");
}
}
// 定义类 ChangshaFactory 实现接口 IProductionFactory
class ChangshaFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("Changsha factory produces duck neck.");
}
public void ProduceDuckWing()
{
// 长沙工厂无法生产鸭翅
Console.WriteLine("Changsha factory cannot produce duck wing.");
}
}
// 使用委托 ProductionDelegate 定义生产委托
delegate void ProductionDelegate();
class Program1
{
static void Main(string[] args)
{
// 创建不同工厂的实例
WuhanFactory wuhanFactory = new WuhanFactory();
NanjingFactory nanjingFactory = new NanjingFactory();
ChangshaFactory changshaFactory = new ChangshaFactory();
// 使用委托进行生产
ProductionDelegate productionDelegate;
// 武汉工厂生产鸭脖和鸭翅
productionDelegate = wuhanFactory.ProduceDuckNeck;
productionDelegate += wuhanFactory.ProduceDuckWing;
productionDelegate();
Console.WriteLine();
// 南京工厂只生产鸭翅
productionDelegate = nanjingFactory.ProduceDuckWing;
productionDelegate();
Console.WriteLine();
// 长沙工厂只生产鸭脖
productionDelegate = changshaFactory.ProduceDuckNeck;
productionDelegate();
}
}
}
}
注意难点:
-
接口和类的设计:理解接口
IProductionFactory
的作用以及各个工厂类WuhanFactory
、NanjingFactory
和ChangshaFactory
的实现,以及它们分别如何实现接口中的方法。 -
委托的使用:理解委托
ProductionDelegate
的作用,以及如何使用委托来动态调用不同工厂的生产方法。 -
委托的组合:注意程序中使用
+=
操作符来将不同工厂的方法添加到委托中,以实现多个方法的调用。 -
控制台输出:理解
Console.WriteLine
的作用,以及它在程序中的使用方式。 -
面向对象的设计思想:理解工厂模式的概念,以及如何通过接口和多态性来实现不同工厂的统一调用。
-
程序流程:理解
Main
方法中的代码逻辑,包括创建工厂实例、使用委托调用工厂方法等步骤。