Windows 程序设计课程作业1 (接口与委托)——周黑鸭工厂生产委托

目录

一、作业要求

二、设计思路

三、代码实现

四、难点分析

五、总结


一、作业要求:

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

二、设计思路:

  1. 定义接口: 
           
    定义一个 IProductionFactory 接口,该接口包含所有工厂都应该具备的基本生产能力,即生产鸭脖和鸭翅的方法。
  2. 实现具体工厂类:
           
    根据实际需求,创建实现 IProductionFactory 接口的具体工厂类,如   WuhanFactoryNanjingFactory 和 ChangshaFactory
  3. 引入委托:
           
    使用委托 ProductionDelegate 来表示生产操作。
  4. 编写主程序:
           
    在 Main 函数中,创建各个工厂类的实例,并初始化生产委托。通过生产委托来调用不同工厂的生产方法,实现产品的生产。

三、代码实现:

using System;

// 定义产品接口  
public interface IProductionFactory
{
    bool CanProduceDuckNeck { get; }
    bool CanProduceDuckWing { get; }
    void ProduceDuckNeck();
    void ProduceDuckWing();
}

// 武汉工厂,可以生产鸭脖和鸭翅  
public class WuhanFactory : IProductionFactory
{
    public bool CanProduceDuckNeck => true;
    public bool CanProduceDuckWing => true;

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

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

// 南京工厂,只能生产鸭翅  
public class NanjingFactory : IProductionFactory
{
    public bool CanProduceDuckNeck => false;
    public bool CanProduceDuckWing => true;

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

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

// 长沙工厂,只能生产鸭脖  
public class ChangshaFactory : IProductionFactory
{
    public bool CanProduceDuckNeck => true;
    public bool CanProduceDuckWing => false;

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

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

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

        // 使用工厂的方法,并根据能力进行检查  
        if (wuhanFactory.CanProduceDuckNeck)
        {
            wuhanFactory.ProduceDuckNeck(); // 武汉工厂生产鸭脖  
        }
        else
        {
            Console.WriteLine("武汉工厂不能生产鸭脖");
        }

        if (wuhanFactory.CanProduceDuckWing)
        {
            wuhanFactory.ProduceDuckWing(); // 武汉工厂生产鸭翅  
        }
        else
        {
            Console.WriteLine("武汉工厂不能生产鸭翅");
        }

        if (nanjingFactory.CanProduceDuckNeck)
        {
            nanjingFactory.ProduceDuckNeck(); // 南京工厂生产鸭脖  
        }
        else
        {
            Console.WriteLine("南京工厂不能生产鸭脖");
        }

        if (nanjingFactory.CanProduceDuckWing)
        {
            nanjingFactory.ProduceDuckWing(); // 南京工厂生产鸭翅  
        }
        else
        {
            Console.WriteLine("南京工厂不能生产鸭翅");
        }

        if (changshaFactory.CanProduceDuckNeck)
        {
            changshaFactory.ProduceDuckNeck(); // 长沙工厂生产鸭脖  
        }
        else
        {
            Console.WriteLine("长沙工厂不能生产鸭脖");
        }

        if (changshaFactory.CanProduceDuckWing)
        {
            changshaFactory.ProduceDuckWing(); // 长沙工厂生产鸭翅  
        }
        else
        {
            Console.WriteLine("长沙工厂不能生产鸭翅");
        }
    }
}
运行结果:

四、难点分析:

  1. 接口定义与实现:
            
    在定义 IProductionFactory 接口时,需要确保接口的方法能够准确反映工厂的生产能力,同时又要避免代码过于复杂。
  2. 异常处理
            当工厂无法生产特定的产品时,应该抛出异常以表示错误。但是,如何设计合理的异常类型、何时抛出异常以及如何在主程序中捕获和处理这些异常,需要深入考虑。

五、总结:

        通过定义接口、实现具体工厂类、引入委托以及编写主程序等步骤,我们可以实现一个基本的工厂生产管理系统。然而,在实际应用中,还需要考虑异常处理、委托使用、代码扩展性和可读性等方面的改进,以确保系统的灵活性和可维护性。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值