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

本文介绍了如何使用C#的接口和委托设计一个灵活的工厂系统,以管理周黑鸭工厂的产品生产。通过接口定义生产方法,不同工厂实现对应功能,委托允许动态调用,遇到不支持的生产操作时抛出异常,实现错误处理。
摘要由CSDN通过智能技术生成

1.作业内容:

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

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

2. 设计思路分析与难点

        在面向对象编程中,接口定义了方法的规范,委托则允许在运行时选择具体的方法执行,这两者同时使用,使得不同的工厂类可以根据需要实现这些方法,增强了程序的灵活性和扩展性,提高了代码的动态性。总体上讲,该系统的设计围绕接口和委托展开。然而,如何处理工厂生产能力的差异性是一个较为棘手的问题。例如,南京工厂无法生产鸭翅。在这种情况下,我们需要一种机制来优雅地处理不支持的生产操作。为了处理这一问题,我们可以利用接口方法的实现来体现生产能力的差异性。对于不支持的方法,我们可以在其实现中抛出 NotImplementedException 异常。这样做的好处是,在程序尝试执行不支持的操作时,会明确地抛出异常,使错误处理变得更加明确。通过这种设计,我们可以在接口中定义所有可能的生产方法,每个工厂类根据自身能力实现所需的方法。当调用不支持的方法时,会抛出 NotImplementedException 异常,并通过异常处理机制输出相应的错误信息。这种方式使得系统能够在运行时动态地适应不同工厂的生产能力,同时提供了明确的错误处理机制。

3.定义接口

// 定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
public interface IProductionFactory
{
    void ProduceDuckNeck();
    void ProduceDuckWing();
}

4. 定义类

// 定义类 WuhanFactory、NanjingFactory、ChangshaFactory 分别实现接口 IProductionFactory,用于具体的生产工厂。
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("长沙工厂无法生产鸭翅。");
    }
}

5.定义委托

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

6.具体实现

public static void FactoryProduct(ProductionDelegate productionDelegate)
    {
        // 如果委托无误,正常调用
        try
        {
            productionDelegate();
        }
        // 如果捕获到异常,则输出错误信息
        catch (NotImplementedException e)
        {
            Console.WriteLine(e.Message);
        }
    }

    private static void Main(string[] args)
    {
        // 创建工厂实例
        IProductionFactory wuhanFactory, nanjingFactory, changshaFactory;
        wuhanFactory = new WuhanFactory();
        nanjingFactory = new NanjingFactory();
        changshaFactory = new ChangshaFactory();
        // 实现委托
        ProductionDelegate wuhanDelegate, nanjingDelegate, changshaDelegate;
        wuhanDelegate = wuhanFactory.ProduceDuckNeck;
        wuhanDelegate += wuhanFactory.ProduceDuckWing;
        nanjingDelegate = nanjingFactory.ProduceDuckWing;
        changshaDelegate = changshaFactory.ProduceDuckNeck;
         // 通过委托进行生产
        FactoryProduct(wuhanDelegate);
        FactoryProduct(nanjingDelegate);
        FactoryProduct(changshaDelegate);
    }
}

7.运行结果

8.实验小结

该实验展示了使用接口、工厂类、委托和异常处理来实现工厂生产过程,并输出相应的错误信息。通过定义接口 IProductionFactory 和实现类 WuhanFactory、NanjingFactory、ChangshaFactory,我们可以在不同的工厂中实现相同的生产方法。使用委托 ProductionDelegate 可以将多个方法封装为一个可执行的单元,并通过异常处理机制来处理可能出现的错误情况。

8.代码地址

代码仓库:https://github.com/zhiyinnitaimei6/windows-/blob/main/vs

9.改进思路

1.工厂能力检查机制:引入能力检查方法,提前检查工厂是否支持特定的生产操作,避免不必要的异常抛出。

2.工厂能力配置:从外部配置文件或数据库中读取工厂的生产能力信息,实现动态调整工厂的生产能力。

3.异常处理的优化:使用日志记录器记录异常信息,提供更完善的异常处理和错误追踪机制。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值