Windows:使用 C# 实现对周黑鸭工厂的产品生产统一管理

 目录

前言

     一、定义接口

              1、接口的介绍

              2、代码实现

     二、实现接口的具体工厂类

              1、接口主要作用

              2、操作

              3、代码实现

     三、定义生产委托 

              1、委托定义

              2、使用委托注意事项

              3、代码实现

     四、整体代码

     五、运行结果

     六、总结

前言

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

具体要求如下:

1、定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。

2、定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。

3、使用委托 ProductionDelegate 定义生产委托。

4、在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。

一、定义接口

1、接口的介绍

1.1接口的语法结构: [访问修饰符] interface 接口标识符 [:基接口列表] {   接口体;}

1.2接口成员访问权限为public,但不能加访问修饰符 接口成员不能有定义 接口的成员必须是方法,属性,事件或索引器,不能包含常数、字段、运算符、实例构造函数、析构函数或类型。

2.代码实现

定义了一个 IProductionFactory 接口,它包含两个方法,分别用于生产鸭脖和鸭翅。接口是一种规范,它定义了对象应该具备的行为,但不关心这些行为如何被实现。

代码如下:

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

二、实现接口的具体工厂类

1、接口的主要作用包括:

1.1.使项目分离:通过接口,可以将项目的不同部分进行分离,使得每个部分都面向接口进行开发,从而提高开发效率。

1.2、降低耦合度:接口使得代码之间的耦合度降低,变得可插拔和可随意切换,提高了代码的灵活性和可维护性。

1.3、多实现和多继承:接口支持多实现和多继承,使得一个类可以实现多个接口,或者一个接口可以继承其他接口,从而实现了功能的扩展和复用。

2、操作

创建了三个具体的工厂类(WuhanFactoryNanjingFactoryChangshaFactory),每个类都实现了 IProductionFactory 接口。这些工厂类负责实现具体的生产逻辑。

3、代码实现

代码如下:

// 武汉工厂,实现生产鸭脖和鸭翅  
public class WuhanFactory : IProductionFactory  
{  
    public void ProduceDuckNeck()  
    {  
        Console.WriteLine("武汉工厂生产鸭脖");  
    }  
  
    public void ProduceDuckWing()  
    {  
        Console.WriteLine("武汉工厂生产鸭翅");  
    }  
}  
  
// 南京工厂,只能生产鸭翅  
public class NanjingFactory : IProductionFactory  
{  
    public void ProduceDuckNeck()  
    {  
        throw new NotImplementedException("南京工厂不能生产鸭脖");  
    }  
  
    public void ProduceDuckWing()  
    {  
        Console.WriteLine("南京工厂生产鸭翅");  
    }  
}  
  
// 长沙工厂,只能生产鸭脖  
public class ChangshaFactory : IProductionFactory  
{  
    public void ProduceDuckNeck()  
    {  
        Console.WriteLine("长沙工厂生产鸭脖");  
    }  
  
    public void ProduceDuckWing()  
    {  
        throw new NotImplementedException("长沙工厂不能生产鸭翅");  
    }  
}  

三、定义生产委托

1.委托定义

[访问修饰符] delegate [委托类型] 委托名(参数)

public delegate void ProductionDelegate();

2、使用委托注意事项

2.1、必须匹配

被委托引用的方法必须与委托的方法返回类型和参数列表完全匹配。

2.2、委托链的管理

在委托中,我们可以使用+=来添加多个方法,形成委托链。但需要注意的是,当委托链中的一个方法抛出异常时,后续的方法将不会执行。因此,我们在设计时要考虑异常的捕获和处理。

3、代码实现

ProductionDelegate 是一个委托类型,它定义了一个方法的签名,这个方法没有参数并且没有返回值。委托类似于 C 或 C++ 中的函数指针,但它是类型安全的,并且可以使用 C# 的语法特性来定义和使用。

代码如下:

// 定义生产委托  
public delegate void ProductionDelegate();  
  
class Program  
{  
    static void Main(string[] args)  
    {  
        // 创建不同工厂的实例  
        IProductionFactory wuhanFactory = new WuhanFactory();  
        IProductionFactory nanjingFactory = new NanjingFactory();  
        IProductionFactory changshaFactory = new ChangshaFactory();  
  
        // 创建生产鸭脖的委托实例  
        ProductionDelegate produceDuckNeck = wuhanFactory.ProduceDuckNeck;  
        // 调用委托生产鸭脖  
        produceDuckNeck();  
  
        // 创建生产鸭翅的委托实例  
        ProductionDelegate produceDuckWing = nanjingFactory.ProduceDuckWing;  
        // 调用委托生产鸭翅  
        produceDuckWing();  
  
        // 假设现在我们需要将鸭脖的生产切换到长沙工厂  
        produceDuckNeck = changshaFactory.ProduceDuckNeck;  
        // 再次调用委托生产鸭脖  
        produceDuckNeck();  
    }  
}

四、整体代码

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

namespace ConsoleApp17
{
    // 定义生产接口  
    public 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()
        {
            throw new NotImplementedException("南京工厂不能生产鸭脖");
        }

        public void ProduceDuckWing()
        {
            Console.WriteLine("南京工厂生产鸭翅");
        }
    }

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

        public void ProduceDuckWing()
        {
            throw new NotImplementedException("长沙工厂不能生产鸭翅");
        }
    }
    // 定义生产委托  
    public delegate void ProductionDelegate();

    internal class Program
    {

        static void Main(string[] args)
        {
            // 创建不同工厂的实例
            IProductionFactory wuhanFactory = new WuhanFactory();
            IProductionFactory nanjingFactory = new NanjingFactory();
            IProductionFactory changshaFactory = new ChangshaFactory();

            // 创建生产鸭脖的委托实例  
            ProductionDelegate produceDuckNeck = wuhanFactory.ProduceDuckNeck;
            // 调用委托生产鸭脖  
            produceDuckNeck();

            // 创建生产鸭翅的委托实例  
            ProductionDelegate produceDuckWing = nanjingFactory.ProduceDuckWing;
            // 调用委托生产鸭翅  
            produceDuckWing();

            // 假设现在我们需要将鸭脖的生产切换到长沙工厂  
            produceDuckNeck = changshaFactory.ProduceDuckNeck;
            // 再次调用委托生产鸭脖  
            produceDuckNeck();
        }
    }
}

五、运行结果

六、总结

在这个案例中,我们通过c#设计了一套系统来实现对周黑鸭工厂产品生产的统一管理,其中涉及到定义接口、实现具体工厂类、使用委托以及各方法的协同工作。通过这种方式,系统的各个部分既保持了足够的灵活性和扩展性,又能够在统一的框架下高效协作,达成我们想要实现的目标。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值