windows程序设计课程作业一:周黑鸭工厂

目录

一、作业内容

1.题目

2.具体要求

二、实现

1.定义接口IProductionFactory

2.定义工厂类

2.1武汉工厂

2.2南京工厂

2.3长沙工厂

3.定义生产委托

4.main函数实现

三.整体代码

四.运行结果

五.学习心得


一、作业内容

1.题目

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

2.具体要求

  1. 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
  2. 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
  3. 使用委托 ProductionDelegate 定义生产委托。
  4. 在 Main 函数中,创建不同工厂的实例,并通过生产委托进行生产。

二、实现

1.定义接口IProductionFactory

关于接口的知识点,可以参考下方链接

C#【高级篇】 C# 接口(Interface)_c# interface-CSDN博客

定义一个接口IProductionFactory,规定一个工厂需要实现的两个方法:ProduceDuckNeck和 ProduceDuckWing

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

2.定义工厂类

定义了三个具体的工厂类,每个类都实现了 IProductionFactory 接口。不同的工厂类在 ProduceDuckNeck 和 ProduceDuckWing 方法中有不同的实现逻辑,代表不同工厂的生产能力。

2.1武汉工厂

武汉工厂可以生产鸭脖和鸭翅

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

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

2.2南京工厂

南京工厂只能生产鸭翅

public class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        throw new NotImplementedException("南京工厂不生产鸭脖");
    }

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

2.3长沙工厂

长沙工厂只能生产鸭脖

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

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

3.定义生产委托

关于委托的知识点可以参考下方链接

C# 委托详解-CSDN博客

public delegate void ProductionDelegate();

4.main函数实现

在 Main 函数中,首先创建了不同工厂的实例。然后,定义了两个委托实例 produceDuckNeck 和 produceDuckWing,并将它们分别指向 ProduceDuckNeck 和 ProduceDuckWing 方法。这两个方法在这里只是模拟生产前的准备步骤,并没有实际的生产逻辑。

接下来,通过 ProduceWithFactory 方法来模拟生产过程。这个方法接受一个工厂实例和一个生产委托作为参数,并尝试通过工厂来生产鸭脖和鸭翅。如果工厂不能生产某种产品,会抛出 NotImplementedException 异常,该异常会被捕获并输出相应的信息。

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

        // 定义生产鸭脖和鸭翅的委托  
        ProductionDelegate produceDuckNeck = new ProductionDelegate(ProduceDuckNeck);
        ProductionDelegate produceDuckWing = new ProductionDelegate(ProduceDuckWing);

        // 通过委托进行生产  
        ProduceWithFactory(wuhanFactory, produceDuckNeck);
        Console.WriteLine("\n");
        ProduceWithFactory(wuhanFactory, produceDuckWing);
        Console.WriteLine("\n");
        ProduceWithFactory(nanjingFactory, produceDuckWing);
        Console.WriteLine("\n");
        ProduceWithFactory(changshaFactory, produceDuckNeck);
        Console.WriteLine("\n");


        void ProduceDuckNeck()
        {
            Console.WriteLine("生产鸭脖");
        }

        void ProduceDuckWing()
        {
            Console.WriteLine("生产鸭翅");
        }

        void ProduceWithFactory(IProductionFactory factory, ProductionDelegate productionDelegate)
        {
            try
            {
                productionDelegate(); 
                factory.ProduceDuckNeck(); 
            }
            catch (NotImplementedException)
            {
                Console.WriteLine("这家工厂不能生产鸭脖");
            }

            try
            {
                productionDelegate(); 
                factory.ProduceDuckWing();
            }
            catch (NotImplementedException)
            {
                Console.WriteLine("这家工厂不能生产鸭翅");
            }
        }
    }
}

三.整体代码

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();
class Program
{
    static void Main(string[] args)
    {
        // 创建工厂实例  
        IProductionFactory wuhanFactory = new WuhanFactory();
        IProductionFactory nanjingFactory = new NanjingFactory();
        IProductionFactory changshaFactory = new ChangshaFactory();

        // 定义生产鸭脖和鸭翅的委托  
        ProductionDelegate produceDuckNeck = new ProductionDelegate(ProduceDuckNeck);
        ProductionDelegate produceDuckWing = new ProductionDelegate(ProduceDuckWing);

        // 通过委托进行生产  
        ProduceWithFactory(wuhanFactory, produceDuckNeck);
        Console.WriteLine("\n");
        ProduceWithFactory(wuhanFactory, produceDuckWing);
        Console.WriteLine("\n");
        ProduceWithFactory(nanjingFactory, produceDuckWing);
        Console.WriteLine("\n");
        ProduceWithFactory(changshaFactory, produceDuckNeck);
        Console.WriteLine("\n");


        void ProduceDuckNeck()
        {
            Console.WriteLine("生产鸭脖");
        }

        void ProduceDuckWing()
        {
            Console.WriteLine("生产鸭翅");
        }

        void ProduceWithFactory(IProductionFactory factory, ProductionDelegate productionDelegate)
        {
            try
            {
                productionDelegate(); 
                factory.ProduceDuckNeck(); 
            }
            catch (NotImplementedException)
            {
                Console.WriteLine("这家工厂不能生产鸭脖");
            }

            try
            {
                productionDelegate(); 
                factory.ProduceDuckWing();
            }
            catch (NotImplementedException)
            {
                Console.WriteLine("这家工厂不能生产鸭翅");
            }
        }
    }
}

四.运行结果

五.学习心得

       通过本次作业,我学会了C#运用类、接口、委托来实现对周黑鸭工厂的产品生产统一管理。熟悉了接口、委托的基本结构及用法。在本题中不使用委托可能会简单一些。委托在这种情况下可能不是必需的,因为我们已经有了明确的接口方法。但是在实际应用中,使用委托通常是为了实现更高级的功能,比如回调函数、事件处理或者动态方法调用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值