用c#编码,实现周黑鸭工厂的产品生产统一管理

1.内容

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

2.代码要求

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

public interface IProductionFactory
{
    void ProduceDuckNeck();
    void ProduceDuckWing();
}

在C#中,接口(Interface)是一个引用类型,它定义了一组方法、属性、事件或索引器的契约。接口本身不实现任何成员,它只是声明成员,然后其他类或结构可以实现这些成员。通过实现接口,类或结构向外界承诺它们将提供接口中声明的所有成员的实现。

接口的主要用途是定义一种契约,该契约由实现接口的类或结构来遵守。这使得接口成为实现多态性的重要工具,因为任何实现特定接口的类的对象都可以被当作该接口类型的对象来使用。

2.定义类

在C#中,接口(Interface)是一种引用类型,它定义了一组契约,即一组方法、属性、事件或索引器的签名,但不提供实现。接口定义了一个类型应如何工作,但不指定如何工作。实现接口的类必须提供接口中定义的所有成员的具体实现。

1.WuhanFactory

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

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

2.NanjingFactory

// 南京工厂,只能生产鸭翅  
public class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        throw new NotSupportedException("南京工厂不能生产鸭脖");
    }

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

3.ChangshaFactory

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

    public void ProduceDuckWing()
    {
        throw new NotSupportedException("长沙工厂不能生产鸭翅");
    }
}

3.使用委托ProductionDelegate定义生产委托

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

在C#中,接口(Interface)是一种引用类型,它定义了一组契约,即一组方法、属性、事件或索引器的签名,但不提供实现。接口定义了一个类型应如何工作,但不指定如何工作。实现接口的类必须提供接口中定义的所有成员的具体实现。

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

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

        // 创建生产委托的实例,并绑定到工厂的生产方法  
        ProductionDelegate produceDuckNeckDelegate = wuhanFactory.ProduceDuckNeck;
        ProductionDelegate produceDuckWingDelegate = nanjingFactory.ProduceDuckWing;

        // 通过生产委托进行生产  
        produceDuckNeckDelegate(); // 输出:武汉工厂生产鸭脖

        produceDuckWingDelegate(); // 输出:南京工厂生产鸭翅  

        // 假设我们需要长沙工厂生产鸭脖  
        produceDuckNeckDelegate = changshaFactory.ProduceDuckNeck;
        produceDuckNeckDelegate(); // 输出:长沙工厂生产鸭脖  
    }
}

4.完整代码

using System;

// 定义生产鸭脖和鸭翅的接口  
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 NotSupportedException("南京工厂不能生产鸭脖");
    }

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

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

    public void ProduceDuckWing()
    {
        throw new NotSupportedException("长沙工厂不能生产鸭翅");
    }
}

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

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

        // 创建生产委托的实例,并绑定到工厂的生产方法  
        ProductionDelegate produceDuckNeckDelegate = wuhanFactory.ProduceDuckNeck;
        ProductionDelegate produceDuckWingDelegate = nanjingFactory.ProduceDuckWing;

        // 通过生产委托进行生产  
        produceDuckNeckDelegate(); // 输出:武汉工厂生产鸭脖

        produceDuckWingDelegate(); // 输出:南京工厂生产鸭翅  

        // 假设我们需要长沙工厂生产鸭脖  
        produceDuckNeckDelegate = changshaFactory.ProduceDuckNeck;
        produceDuckNeckDelegate(); // 输出:长沙工厂生产鸭脖  
    }
}

5.运行结果

6.代码总结

在这实验中,我们用c#编写了一套系统,用于不同的工厂生产周黑鸭,具有较高的灵活性和可变性。在这个示例中,我们定义了一个接口IProductionFactory和两个工厂类WuhanFactoryNanjingFactory,它们分别实现了这个接口。我们还定义了一个委托ProductionDelegate,它可以被用来指向任何没有参数和返回值的方法。在Main函数中,我们创建了工厂实例,并将委托绑定到工厂的具体生产方法上,然后通过调用委托来执行生产操作。但工厂多了之后,委托设计需要谨慎,这也是这个代码的难点所在。在实际应用中,你应该根据工厂的实际能力来动态地绑定委托,比如通过工厂方法模式或者依赖注入来实现。通过此次实验,我也获得了代码能力和委托设计能力的提升。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值