关于周黑鸭生产问题

题目

使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。

定义接口 IProductionFactory

定义类 WuhanFactory NanjingFactory ChangshaFactory分别实现接口 IProductionFactory

使用委托 Production Delegate定义生产委托。

在 Main函数中,创建不同工厂的实例,并通过生产委托进行生产。用于具体的生产工厂n包含生产鸭脖和鸭翅 的方法

主体思路

 1.建立接口

 2.设置工厂类并继承接口

 3.定义内部函数

 4.创建生产委任

 5.实现

一.接口

1.接口的定义

interface IProductionFactory
 {
     // 生产鸭脖的方法
     void ProduceDuckNeck();
     // 生产鸭翅的方法
     void ProduceDuckWing();
}

2.接口的意义

  1. 多态性:通过接口,不同的类可以实现相同的接口,并以统一的方式被使用。使得我们可以编写通用的代码来处理实现了特定接口的任何对象,而不需要关心它们的具体类型。

  2. 定义契约:接口定义了一组方法和属性的契约,任何实现该接口的类都必须遵守这个契约。这确保了使用接口的代码可以依赖于一组预定义的行为,从而提高了代码的可预测性和可靠性。

  3. 模块化设计:通过定义和使用接口,我们可以将软件系统划分为更小、更独立的模块。每个模块可以专注于实现其特定的功能,并通过接口与其他模块进行交互。

二.工厂类

创建类之后通过继承接口来实现功能,从而来获得不同的权限,解决实际问题。

下面是建立的三个工厂类

1.武汉工厂

//武汉工厂
public class WuhanFactory: IProductionFactory
  {
      public void ProduceDuckNeck(){ Console.WriteLine("武汉工厂生产鸭脖"); }
      public void ProduceDuckWing() { Console.WriteLine("武汉工厂生产鸭翅"); }
  }

2.南京工厂

 //南京工厂
public class NanjingFactory:IProductionFactory
 {
     public void ProduceDuckNeck() { Console.WriteLine("南京工厂不生产鸭脖"); }
     public void ProduceDuckWing() { Console.WriteLine("南京工厂生产鸭翅"); }
     
 }

3.长沙工厂

//长沙工厂
public class ChangshaFactory:IProductionFactory 
{ 
     public void ProduceDuckNeck() { Console.WriteLine("长沙工厂生产鸭脖"); }
     public void ProduceDuckWing() { Console.WriteLine("长沙工厂不生产鸭翅"); }
        }

 三.MAIN函数

1.定义生产委托

创建的生产委托

//定义委托
public delegate void ProductionDelegate();

2.建立工厂实例

创建的工厂实例

//工厂实例
            //武汉工厂
            IProductionFactory wuhanfactory = new WuhanFactory();
            //南京工厂
            IProductionFactory nanjingfactory = new NanjingFactory();
            //长沙工厂
            IProductionFactory changshafactory = new ChangshaFactory();

3 .创建生产委托

 //创建生产委托
 ProductionDelegate w1 = wuhanfactory.ProduceDuckNeck;
 ProductionDelegate w2 = wuhanfactory.ProduceDuckWing;        
 ProductionDelegate n1= nanjingfactory.ProduceDuckWing;           
 ProductionDelegate n2 = nanjingfactory.ProduceDuckNeck;
 ProductionDelegate c1= changshafactory.ProduceDuckNeck;       
 ProductionDelegate c2 = changshafactory.ProduceDuckWing;

4.进行生产

    //进行生产
    w1();
    w2();
    n1();
    n2();
    c1();
    c2();

 四.运行结果

90a13d2cc2d34e798f4d4465e793abc2.png

五.总结

通过这个题目,在c#中通过对类,接口,委任等的使用实现了对周黑鸭工程的生产产品权限的设置。极大的体现了代码的重用性和模块化。

六.难点

需要通过接口进行不同的的设置,也需要考虑到后面的设置,比如生产扩大,以及扩大权限等。其中委托结构必须谨慎处理,防止出现差错,需要时刻考虑到代码需要有可拓展性,方便后面的权限管理。

七.完整代码 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace zhouheiya
{
    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() { Console.WriteLine("南京工厂不生产鸭脖"); }
        public void ProduceDuckWing() { Console.WriteLine("南京工厂生产鸭翅"); }
        
    }
    //长沙工厂
    public class ChangshaFactory:IProductionFactory 
    { 
         public void ProduceDuckNeck() { Console.WriteLine("长沙工厂生产鸭脖"); }
         public void ProduceDuckWing() { Console.WriteLine("长沙工厂不生产鸭翅"); }
            }
   
    internal class Program
    {
        //定义委托
        public delegate void ProductionDelegate();
        static void Main(string[] args)
        { //工厂实例
            //武汉工厂
            IProductionFactory wuhanfactory = new WuhanFactory();
            //南京工厂
            IProductionFactory nanjingfactory = new NanjingFactory();
            //长沙工厂
            IProductionFactory changshafactory = new ChangshaFactory();
            //创建生产委托
            ProductionDelegate w1 = wuhanfactory.ProduceDuckNeck;
            ProductionDelegate w2 = wuhanfactory.ProduceDuckWing;        
            ProductionDelegate n1= nanjingfactory.ProduceDuckWing;           
            ProductionDelegate n2 = nanjingfactory.ProduceDuckNeck;
            ProductionDelegate c1= changshafactory.ProduceDuckNeck;       
            ProductionDelegate c2 = changshafactory.ProduceDuckWing;
            //进行生产
            w1();
            w2();
            n1();
            n2();
            c1();
            c2();
            Console.ReadLine();
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值