Windows程序设计作业-C#实现周黑鸭工厂生产管理

Windows程序设计作业-C#实现周黑鸭工厂生产管理

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

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

一、系统设计

  1. 接口层
public interface IProductionFactory
{
    void ProduceDuckNeck();
    void ProduceDuckWing();
}

这里定义了一个 IProductionFactory 接口,包含两个方法 ProduceDuckNeck()ProduceDuckWing(),用于表示工厂生产鸭脖和鸭翅的能力。

  1. 实现层

    WuhanFactory 类实现了 IProductionFactory 接口,表示武汉工厂,具有生产鸭脖和鸭翅的能力。它实现了接口中定义的两个方法,分别输出信息表示生产的产品。

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

    NanjingFactory 类也实现了 IProductionFactory 接口,表示南京工厂,只具有生产鸭翅的能力。在 ProduceDuckNeck() 方法中,没有实际处理,因为南京工厂不能生产鸭脖。

    public class ChangshaFactory : IProductionFactory
    {
        public void ProduceDuckNeck()
        {
            Console.WriteLine("南京工厂生产鸭翅.");
        }
    
        public void ProduceDuckWing()
        {
            // 长沙工厂不能生产鸭翅,这里不做任何处理
        }
    }
    
    

    ChangshaFactory 类同样实现了 IProductionFactory 接口,表示长沙工厂,只具有生产鸭脖的能力。在 ProduceDuckWing() 方法中,没有实际处理,因为长沙工厂不能生产鸭翅。

    public class ChangshaFactory : IProductionFactory
    {
        public void ProduceDuckNeck()
        {
            Console.WriteLine("长沙工厂生产鸭脖.");
        }
    
        public void ProduceDuckWing()
        {
            // 长沙工厂不能生产鸭翅,这里不做任何处理
        }
    }
    
  2. 调用层

    调用层是这个系统的最上层,它直接面向客户端,接收客户端的请求。

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

二、代码总览

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()
    {
        // 南京工厂不能生产鸭脖,这里不做任何处理
    }

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

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

    public void ProduceDuckWing()
    {
        // 长沙工厂不能生产鸭翅,这里不做任何处理
    }
}

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

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

        // 定义委托实例,并绑定不同工厂的生产方法
        ProductionDelegate wuhanProduction = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
        wuhanProduction += wuhanFactory.ProduceDuckWing;

        ProductionDelegate nanjingProduction = new ProductionDelegate(nanjingFactory.ProduceDuckWing);

        ProductionDelegate changshaProduction = new ProductionDelegate(changshaFactory.ProduceDuckNeck);

        // 使用委托进行生产
        Console.WriteLine("武汉工厂:");
        wuhanProduction(); // 调用委托,执行武汉工厂的生产方法

        Console.WriteLine("\n南京工厂:");
        nanjingProduction(); // 调用委托,执行南京工厂的生产方法

        Console.WriteLine("\n长沙工厂:");
        changshaProduction(); // 调用委托,执行长沙工厂的生产方法
    }
}

三、代码结果

在这里插入图片描述

四、总结

这个程序展示了如何利用面向对象的思想和委托来实现对不同工厂生产能力的统一管理和调用。使用接口抽象工厂能力,实现了工厂生产的多态性,使得不同工厂可以通过相同的接口进行统一管理。委托的使用使得生产行为可以被动态绑定和调用,增强了程序的灵活性和可扩展性。整体设计体现了面向对象的设计原则,包括接口隔离、单一职责和依赖倒置等。

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值