使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理

本文介绍了如何使用C#的委托和接口实现对周黑鸭工厂的统一管理,区分武汉、南京和长沙工厂的生产功能,强调了接口和委托在代码复用和灵活性上的优势。
摘要由CSDN通过智能技术生成

此题要求我们利用C#对周黑鸭工厂实现统一管理,要求武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。主要利用类,接口,委托实现。

以下是创建委托,定义接口,以及定义各地工厂的类,在各个工厂的类中根据要求的不同对接口中生产鸭脖,鸭翅的功能进行复写。

首先,我们先定义一个生产委托

delegate void ProductionDelegate();// 定义生产委托

定义完这个委托后,在后面的主函数中各个工厂生产鸭脖,鸭翅将作为事件添加到这个委托里,然后直接调用这个委托就能实现各个工厂生产。

接下来,我们将定义生产鸭脖,鸭翅的接口:

// 定义接口 IProductionFactory
     interface IProductionFactory
     {
         void ProduceDuckNeck();// 生产鸭脖
         void ProduceDuckWing();// 生产鸭翅
     }

定义完接口后,我们后面会对每一个工厂创建一个类,每一个类都将调用这个接口实现生产功能,并且根据每个工厂的对应的要求在其类中对这两个函数进行复写,拿武汉工厂的例子来说,以下是武汉工厂的定义:

 class WuhanFactory : IProductionFactory//传入接口
     {
         public void ProduceDuckNeck()
         {
             // 对生产鸭脖进行复写,武汉可以生产鸭脖
             Console.WriteLine("Wuhan Factory is producing Duck Neck.");
         }
         public void ProduceDuckWing()
         {
             // 对生产鸭翅进行复写,武汉可以生产鸭翅
             Console.WriteLine("Wuhan Factory is producing Duck Wing.");
         }
     }

以下是总的对所有工厂类的定义,接口,委托的函数:

 internal class Program
 {
     delegate void ProductionDelegate();// 定义生产委托

     // 定义接口 IProductionFactory
     interface IProductionFactory
     {
         void ProduceDuckNeck();// 生产鸭脖
         void ProduceDuckWing();// 生产鸭翅
     }

     // 实现武汉工厂
     class WuhanFactory : IProductionFactory
     {
         public void ProduceDuckNeck()
         {
             // 对生产鸭脖进行复写,武汉可以生产鸭脖
             Console.WriteLine("Wuhan Factory is producing Duck Neck.");
         }

         public void ProduceDuckWing()
         {
             // 对生产鸭翅进行复写,武汉可以生产鸭翅
             Console.WriteLine("Wuhan Factory is producing Duck Wing.");
         }
     }

     // 实现南京工厂
     class NanjingFactory : IProductionFactory
     {
         public void ProduceDuckNeck()
         {
             // 对生产鸭脖进行复写,南京不可以生产鸭脖
             Console.WriteLine("Nanjing Factory cannot produce Duck Neck.");
         }

         public void ProduceDuckWing()
         {
             // 对生产鸭翅进行复写,南京可以生产鸭翅
             Console.WriteLine("Nanjing Factory is producing Duck Wing.");
         }
     }

     // 实现长沙工厂
     class ChangshaFactory : IProductionFactory
     {
         public void ProduceDuckNeck()
         {
             // 对生产鸭脖进行复写,长沙可以生产鸭脖
             Console.WriteLine("Changsha Factory is producing Duck Neck.");
         }

         public void ProduceDuckWing()
         {
              // 对生产鸭翅进行复写,长沙不可以生产鸭翅
             Console.WriteLine("Changsha Factory cannot produce Duck Wing.");
         }
     }

接下来将在主函数中创建对象(也就是各个工厂的实例),并且将各个工厂的生产方法加入到委托中,调用委托实现生产,并且对各个工厂进行统一管理,首先是创建工厂的对象,利用new来创建:

// 创建不同工厂的实例
    WuhanFactory wuhanFactory = new WuhanFactory();
    NanjingFactory nanjingFactory = new NanjingFactory();
    ChangshaFactory changshaFactory = new ChangshaFactory();

然后是将武汉工厂的生产任务加到委托里,并调用委托:

// 使用生产委托进行生产
    ProductionDelegate productionDelegate;

    // 武汉工厂生产
    productionDelegate = wuhanFactory.ProduceDuckNeck;//将委托定义成武汉工厂生产鸭脖
    productionDelegate += wuhanFactory.ProduceDuckWing;//委托中还要加入武汉工厂生产鸭翅
    productionDelegate();//执行委托

每次调用一个工厂的生产前将委托重置一下,就是productionDelegate=工厂名.ProduceDuckNeck,重置成每个工厂生产鸭脖的任务,然后在委托中再加上这个工厂生产鸭翅的任务,最后将所有的步骤整合一下,下面是总代码:

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.ProduceDuckNeck;//将委托定义成南京工厂生产鸭脖
    productionDelegate += nanjingFactory.ProduceDuckWing;//委托中还要加入南京工厂生产鸭翅
    productionDelegate();//执行委托

    Console.WriteLine();

    // 长沙工厂生产
    productionDelegate = changshaFactory.ProduceDuckNeck;//将委托定义成长沙工厂生产鸭脖
    productionDelegate += changshaFactory.ProduceDuckWing;//委托中还要加入长沙工厂生产鸭翅
    productionDelegate();//执行委托
}

本篇主要通过一个周黑鸭工厂的例子展示了委托,接口的基本用法,接口的好处就是同一个接口,在不同的类入口中实现的功能不一样,不用再在每一个类中重新定义函数。

委托可以动态的添加方法,在此题中就是各个工厂生产鸭翅,鸭脖,使执行更加方便,快捷,通过委托能够非常方便,快捷地实现对各个工厂生产的管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值