周黑鸭中的C#

本文详细描述了一个使用C#编写的示例,通过接口、工厂类和委托实现对周黑鸭工厂的产品生产管理,强调了接口的定义、工厂类的实现以及委托在动态调用生产方法中的作用。
摘要由CSDN通过智能技术生成

目录

1.作业内容

2.实现思路

3.具体实现

3.1 定义生产接口

3.2 定义三个工厂

3.2.1 武汉工厂

3.2.2 南京工厂

3.2.3 长沙工厂

3.3 定义委托

3.4 Main函数实现


1.作业内容


使用 C# 编码(涉及类、接口、委托等关键知识点),实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。具体要求如下: 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。 使用委托 ProductionDelegate 定义生产委托。 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。

2.实现思路

为了实现这个需求,首先定义一个接口 IProductionFactory,它包含了生产鸭脖和鸭翅的方法。然后,定义三个工厂类 WuhanFactoryNanjingFactory、和 ChangshaFactory,分别实现这个接口。由于南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖,所以它们在实现接口时会有所区别。

接下来,使用委托 ProductionDelegate 来定义一个生产委托,这将在运行时动态地调用生产方法。最后,在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。

3.具体实现

3.1 定义生产接口

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

3.2 定义三个工厂

3.2.1 武汉工厂

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

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

3.2.2 南京工厂

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

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

3.2.3 长沙工厂

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

        public void ProduceDuckWing()
        {
            Console.WriteLine("长沙工厂不能生产鸭翅");
        }
    }

3.3 定义委托

    public delegate void ProductionDelegate();

3.4 Main函数实现

3.4.1 创建工厂

    WuhanFactory wuhanFactory = new WuhanFactory();
    NanjingFactory nanjingFactory = new NanjingFactory();
    ChangshaFactory changshaFactory = new ChangshaFactory();

3.4.2 使用委托进行生产

    ProductionDelegate wuhanProductionNeck = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
    ProductionDelegate wuhanProductionWing = new ProductionDelegate(wuhanFactory.ProduceDuckWing);
    ProductionDelegate nanjingProductionWing = new ProductionDelegate(nanjingFactory.ProduceDuckWing);
    ProductionDelegate changshaProductionNeck = new ProductionDelegate(changshaFactory.ProduceDuckNeck);

3.4.3 执行生产

    wuhanProductionNeck();
    wuhanProductionWing();
    nanjingProductionWing();
    changshaProductionNeck();

4.完整代码及运行结果

4.1 完整代码

using System;

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

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

    // 武汉工厂
    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("长沙工厂不能生产鸭翅");
        }
    }

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

            // 使用委托进行生产
            ProductionDelegate wuhanProductionNeck = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
            ProductionDelegate wuhanProductionWing = new ProductionDelegate(wuhanFactory.ProduceDuckWing);
            ProductionDelegate nanjingProductionWing = new ProductionDelegate(nanjingFactory.ProduceDuckWing);
            ProductionDelegate changshaProductionNeck = new ProductionDelegate(changshaFactory.ProduceDuckNeck);

            // 执行生产
            wuhanProductionNeck();
            wuhanProductionWing();
            nanjingProductionWing();
            changshaProductionNeck();
        }
    }
}

4.2 运行结果

5.总结

5.1 核心点

5.1.1 接口定义 

通过定义一个接口来规定所有工厂类必须实现的方法,即生产鸭脖(ProduceDuckNeck)和鸭翅(ProduceDuckWing)。这样做可以确保不同的工厂类有统一的行为标准。

5.1.2 类实现

WuhanFactoryNanjingFactoryChangshaFactory 类分别实现了 IProductionFactory 接口。这些类根据各自的生产能力,实现了接口中定义的方法。

5.1.3委托

委托被用作封装具体方法的引用,允许在运行时动态地调用这些方法。

5.1.4动态方法调用

Main 函数中,通过创建委托实例,将特定工厂的生产方法与委托关联起来,然后通过调用委托来执行具体的生产动作。

5.2 注意事项

5.2.1接口方法实现

当一个类实现一个接口时,它必须提供接口中所有方法的具体实现。在本例中,南京和长沙工厂分别不能生产鸭脖和鸭翅,但它们仍然提供了方法的实现,虽然这些实现只是输出一条信息。

5.2.2委托的使用

委托需要被实例化才能使用,实例化委托时必须提供一个与委托有相同签名的方法。在本例中,传递了工厂实例的方法。

5.3 心得体会

5.3.1 接口的作用

接口在这里起到了定义规范的作用,它允许编写出可扩展和可互换的代码,因为任何实现了 IProductionFactory 接口的类都可以被用来生产产品。

5.3.2 设计模式的应用

这个示例展示了工厂模式的简单应用,其中工厂类负责具体产品的创建过程。这种模式有助于减少系统中的耦合,并提高了代码的灵活性和可维护性。

5.3.3委托的灵活性

委托提供了一种将方法作为参数传递的方式,这在编写事件驱动程序或回调时非常有用。在本例中,委托使得生产调用更加灵活。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值