1、作业内容
使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。具体要求如下:
- 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
- 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
- 使用委托 ProductionDelegate 定义生产委托。
- 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。
一、主要思路
1.定义产品接口
public interface IProduct
{
void Display();
}
2.定义生产工厂接口
public interface IProductionFactory
{
IProduct ProduceDuckNeck();
IProduct ProduceDuckWing();
}
3.定义鸭脖类
public class DuckNeck : IProduct
{
public void Display()
{
Console.WriteLine("生产了鸭脖");
}
}
4.定义鸭翅类
public class DuckWing : IProduct
{
public void Display()
{
Console.WriteLine("生产了鸭翅");
}
}
5. 定义武汉工厂类
public class WuhanFactory : IProductionFactory
{
public IProduct ProduceDuckNeck()
{
return new DuckNeck();
}
public IProduct ProduceDuckWing()
{
return new DuckWing();
}
}
6.定义南京工厂类
public class NanjingFactory : IProductionFactory
{
public IProduct ProduceDuckNeck()
{
throw new NotSupportedException("南京工厂不生产鸭脖");
}
public IProduct ProduceDuckWing()
{
return new DuckWing();
}
}
7.定义长沙工厂类
public class ChangshaFactory : IProductionFactory
{
public IProduct ProduceDuckNeck()
{
return new DuckNeck();
}
public IProduct ProduceDuckWing()
{
throw new NotSupportedException("长沙工厂不生产鸭翅");
}
}
8.声明生产委托
public delegate IProduct ProductionDelegate();
9.在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。
class Program
{
static void Main(string[] args)
{
IProductionFactory wuhanFactory = new WuhanFactory();
IProductionFactory nanjingFactory = new NanjingFactory();
IProductionFactory changshaFactory = new ChangshaFactory(); // 创建不同工厂的实例
ProductionDelegate produceDuckNeck = wuhanFactory.ProduceDuckNeck; // 使用委托进行生产
produceDuckNeck.Invoke(); // 生产鸭脖
ProductionDelegate produceDuckWing = nanjingFactory.ProduceDuckWing;
produceDuckWing.Invoke(); // 生产鸭翅
// 尝试在不支持的工厂生产产品会抛出异常
// ProductionDelegate produceInvalidDuckNeck = nanjingFactory.ProduceDuckNeck;
// produceInvalidDuckNeck.Invoke(); // 这会抛出NotSupportedExceptiondKey();
Console.Rea
}
}
二、设计难点
1.类的设计:你需要设计出不同的鸭产品类,如鸭脖、鸭翅等,这些类应该包含产品的名称、价格、数量等信息,并且可以进行增删改查操作。
2.接口的使用:你可以定义一个IProductFactory接口,该接口包含创建鸭脖和鸭翅的方法。然后让不同的工厂类去实现这个接口,这样就可以根据不同的工厂来获取不同的鸭产品了 #1。
3.委托的应用:委托可以用来处理异步操作,例如,当用户下单购买鸭产品时,你可能需要启动一个异步操作来处理订单,这时就可以使用委托来实现。
4.异常处理:在实际的生产过程中,可能会遇到各种异常情况,如库存不足、订单超时等,你需要考虑如何合理地处理这些异常情况。
5.数据持久化:你需要将鸭产品的信息存储到数据库中,以便于后续的操作。这通常涉及到Entity Framework等ORM框架的使用。
6.多线程和并发:如果你的系统支持多线程,那么就需要考虑线程安全和并发控制的问题。
三、总结
通过本次编码实践,我们应对了对周黑鸭工厂的产品生产统一管理需求,合理运用了c#中的知识点,不仅巩固了课堂上学到的知识,还提高了解决实际问题的能力,培养编程思维和工程实践能力。此外,作业过程中遇到的问题和挑战也能促进学生自主学习和研究能力的提升。