柳州正规网站制作公司哪家好,如何免费建立官方网站,外贸cms 网站,我想自己做的知道网站文章目录 1. 作业内容2. 设计思路分析与难点3. 代码实现3.1 接口定义3.2 工厂类实现3.3 委托和事件3.4 主函数3.5 代码运行结果 4. 代码地址5. 总结改进思路6. 阅读参考 1. 作业内容 使用 C# 编码#xff08;涉及类、接口、委托等关键知识点#xff09;#xff0c;实现… 文章目录 1. 作业内容2. 设计思路分析与难点3. 代码实现3.1 接口定义3.2 工厂类实现3.3 委托和事件3.4 主函数3.5 代码运行结果 4. 代码地址5. 总结改进思路6. 阅读参考 1. 作业内容 使用 C# 编码涉及类、接口、委托等关键知识点实现对周黑鸭工厂的产品生产统一管理主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅南京工厂只能生产鸭翅长沙工厂只能生产鸭脖。具体要求如下
定义接口 IProductionFactory包含生产鸭脖和鸭翅的方法。定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory用于具体的生产工厂。使用委托 ProductionDelegate 定义生产委托。在 Main 函数中创建不同工厂的实例并通过生产委托进行生产。
2. 设计思路分析与难点 在面向对象编程中接口定义了方法的规范委托则允许在运行时选择具体的方法执行这两者同时使用使得不同的工厂类可以根据需要实现这些方法增强了程序的灵活性和扩展性提高了代码的动态性。总体上讲该系统的设计围绕接口和委托展开。 如何处理工厂生产能力的差异性是一个较为棘手的问题例如南京工厂无法生产鸭翅。我们需要一种机制来优雅地处理不支持的生产操作。 我们利用接口方法的实现来体现生产能力的差异性在不支持的方法中抛出NotImplementedException异常。这确保了程序在尝试执行不支持的操作时会清楚地报错使得错误处理更加明确。 如图所示 在这里只是简单地抛出异常并且报错并不去继续其他处理。
3. 代码实现
3.1 接口定义
interface IProductionFactory
{
void ProduceNeck();
void ProduceWing();
}IProductionFactory包含两个方法ProduceNeck() 和 ProduceWing()。这两个方法分别代表生产鸭脖和鸭翅的能力。
3.2 工厂类实现
class WuhanFactory : IProductionFactory
{public void ProduceNeck() {Console.WriteLine(Wuhan Factory produce duck neck.);}public void ProduceWing() {Console.WriteLine(Wuhan Factory produce duck wing.);}
}class NanjingFactory : IProductionFactory
{public void ProduceNeck(){Console.WriteLine(Nanjing Factory produce duck neck.);}public void ProduceWing(){throw new NotImplementedException(Nanjing Factory has no access to produce duck wing!!!);}
}class ChangshaFactory : IProductionFactory
{public void ProduceNeck(){throw new NotImplementedException(Changsha Factory has no access to produce duck neck!!!);}public void ProduceWing(){Console.WriteLine(Changsha Factory produce duck wing.);}
}在这里我们创建了三个工厂类WuhanFactory、NanjingFactory 和 ChangshaFactory每个类都实现了 IProductionFactory 接口。由于不同工厂能够生产的产品不同我们通过用不同方式实现接口方法来体现他们在生产上的差异
若是能够实现生产该类产品则正常输出语句xxx Factory produce duck xxx.若是不能生产该产品则抛出NotImplementedException异常异常信息为xxx Factory has no access to produce duck xxx.
3.3 委托和事件
//定义委托
public delegate void ProductionDelegate();//定义事件
public event ProductionDelegate ExecuteOrder;我们定义了一个名为ProductionDelegate的委托它不带参数且不返回值用于封装生产方法的调用并且定义了事件ExecuteOrder用于记录实现各个工厂的方法。
3.4 主函数 在 Main 方法中我们为每个工厂实例化了相应的生产委托并通过这些委托调用生产方法。
static void Main(string[] args)
{//分别为三个工厂类实例化IProductionFactory Wuhan_Factory new WuhanFactory();IProductionFactory Nanjing_Factory new NanjingFactory();IProductionFactory Changsha_Factory new ChangshaFactory();//为每一个工厂都创建一个单独的委托ProductionDelegate wuhanProduction Wuhan_Factory.ProduceNeck;wuhanProduction Wuhan_Factory.ProduceWing;ProductionDelegate nanjingProduction Nanjing_Factory.ProduceNeck;nanjingProduction Nanjing_Factory.ProduceWing;ProductionDelegate changshaProduction Changsha_Factory.ProduceWing;changshaProduction Changsha_Factory.ProduceNeck;Console.WriteLine(Wuhan Factory production:);try{wuhanProduction();}catch (NotImplementedException e){Console.WriteLine(e.Message);}Console.WriteLine(Nanjing Factory production:);try{nanjingProduction();}catch (NotImplementedException e){Console.WriteLine(e.Message);}Console.WriteLine(Changsha Factory production:);try{changshaProduction();}catch (NotImplementedException e){Console.WriteLine(e.Message);}Console.ReadLine();}除此之外还采用try和catch语句块来实现订单的执行对于每个工厂的委托都使用了一个try-catch语句块能够在出现异常的时候及时抛出并且不影响其他工厂的生产。
3.5 代码运行结果 4. 代码地址 代码仓库https://github.com/hmcy-zbx/Windows_homework
5. 总结改进思路 通过本次项目的练习我们展示了如何使用 C# 中的面向对象特性来构建一个简单的实现周黑鸭多工厂生产管理系统。该系统不仅展示了接口、类和委托的使用还体现了面向对象设计原则继承性的应用是一次很好的练习。 在未来还可以使用设计模式对其进行改进利用简单工厂模式或者抽象工厂模式来实现可以使其更加接近实际生产的需求。
6. 阅读参考 C#教程-接口csharp-interface C#教程-委托BV1TP411R72r C#教程-事件BV1ou411a7YD 简单工厂模式和抽象工厂模式Graphic Design Patterns