windows程序设计课程作业一:C#实现周黑鸭工厂的产品生产统一管理

目录

0 作业内容

1 代码设计

1.1 设计思路

1.2 难点

2 代码实现

2.1 定义接口IProductionFactory

2.2 定义类( WuhanFactory、NanjingFactory、ChangshaFactory)

2.2.1 定义武汉工厂WuhanFactory

2.2.2 定义南京工厂NanjingFactory

2.2.3 定义长沙工厂ChangshaFactory

2.3 定义委托ProductionDelegate

2.4 Main函数 

2.4.1 创建不同的工厂实例

 2.4.2 创建不同的生产委托

2.4.3 通过生产委托进行生产

 3 运行结果

 4 总结

5 完整代码

0 作业内容

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

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

1 代码设计

1.1 设计思路

        通过接口定义统一的生产方式,使得不同工厂可以调用相同的生产方式。委托的使用则可以让工厂根据需求进行动态的生产。

  1. 创建一个接口IProductionFactory使其包含生产鸭脖的方法DuckNeckProduction和生产鸭翅的方法DuckWingProduction;
  2. 创建三个类,分别代表武汉工厂WuhanFactory、南京工厂NanjingFactory和长沙工厂ChangshaFactory,并使这三个类可以调用接口IProductionFactory;
  3. 定义委托ProductionDelegate,用于生成不同的生产委托;
  4. 创建不同的工厂实例,并生成不同的生产委托进行生产。
1.2 难点
  • 确保每个工厂可以正常调用接口;
  • 定义委托以及向委托实例注册方法。

2 代码实现

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

         在接口IProductionFactory中定义两个方法,分别表示生产鸭脖DuckNeckProduction和生产鸭翅DuckWingProduction.

2.2 定义类( WuhanFactory、NanjingFactory、ChangshaFactory)

        根据各个工厂的生产特点定义不同的工厂类。

2.2.1 定义武汉工厂WuhanFactory
//定义类WuhanFactor,实现接口 IProductionFactory
class WuhanFactory :IProductionFactory
{
    //既生产鸭脖又生产鸭翅
    public void DuckNeckProduction()
    {
        Console.WriteLine("WuhanFactory produces duck necks.");
    }
    public void DuckWingProduction()
    {
        Console.WriteLine("WuhanFactory produces duck wings.");
    }
}
2.2.2 定义南京工厂NanjingFactory
//定义类NanjingFactory,实现接口 IProductionFactory
class NanjingFactory :IProductionFactory
{
    //只生产鸭翅
    public void DuckNeckProduction()
    {
        Console.WriteLine("NanjingFactory does not produce duck necks.");
    }
    public void DuckWingProduction()
    {
        Console.WriteLine("NanjingFactory produces duck wings.");
    }
}
2.2.3 定义长沙工厂ChangshaFactory
//定义类ChanngshaFactory,实现接口 IProductionFactory
class ChanngshaFactory :IProductionFactory
{
    //只生产鸭脖
    public void DuckNeckProduction()
    {
        Console.WriteLine("ChangshaFactory produces duck necks.");
    }
    public void DuckWingProduction()
    {
        Console.WriteLine("ChangshaFactory does not produce duck wings.");
    }
}
2.3 定义委托ProductionDelegate
//定义ProductionDelegate
public delegate void ProductionDelegate();
2.4 Main函数 
2.4.1 创建不同的工厂实例
//创建不同的工厂实例
IProductionFactory wuhanfactory = new WuhanFactory();//武汉工厂
IProductionFactory nanjingfactory = new NanjingFactory();//南京工厂
IProductionFactory changshafactory = new ChanngshaFactory();//长沙工厂

注意:接口本身不能直接实例化,但你可以使用接口类型的变量引用实现接口的类的实例,并通过该变量访问接口成员。

 2.4.2 创建不同的生产委托
//创建不同的生产委托
//武汉工厂
ProductionDelegate wuhanproductionDelegate = wuhanfactory.DuckNeckProduction;
wuhanproductionDelegate += wuhanfactory.DuckWingProduction;
//南京工厂
ProductionDelegate nanjingproductionDelegate = nanjingfactory.DuckNeckProduction;
nanjingproductionDelegate += nanjingfactory.DuckWingProduction;
//长沙工厂
ProductionDelegate changshaproductionDelegate = changshafactory.DuckNeckProduction;
changshaproductionDelegate += changshafactory.DuckWingProduction;

说明:采用多播委托来对各个生产委托进行创建。

2.4.3 通过生产委托进行生产
//通过生产委托进行生产
//武汉工厂
Console.WriteLine("Product of WuhanFactory:");
wuhanproductionDelegate();
//南京工厂
Console.WriteLine("Product of NanjngFactory:");
nanjingproductionDelegate();
//长沙工厂
Console.WriteLine("Product of ChangshaFactory:");
changshaproductionDelegate();

说明:myDelegate()是一种调用委托更简化的方式,即直接将委托实例作为方法调用。其等效于myDelegate.Invoke()。

 3 运行结果

 4 总结

        通过本次作业,我学会了C#运用类、接口、委托来实现对周黑鸭工厂的产品生产统一管理。熟悉了接口、委托的基本结构及用法。运用这种设计方法使得每个工厂根据自身的特点生产对应的产品,而调用者只需要通过工厂接口和产品接口来操作,无需关心具体的工厂类和产品类,这让系统操作更加灵活,也提高了代码的可维护性。

5 完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Factory
{
    //定义接口IProductionFactory,包含生产鸭脖和鸭翅的方法
    public interface IProductionFactory
    {
        //生产鸭脖
        void DuckNeckProduction();
        //生产鸭翅
        void DuckWingProduction();
    }

    //定义类WuhanFactor,实现接口 IProductionFactory
    class WuhanFactory :IProductionFactory
    {
        //既生产鸭脖又生产鸭翅
        public void DuckNeckProduction()
        {
            Console.WriteLine("WuhanFactory produces duck necks.");
        }
        public void DuckWingProduction()
        {
            Console.WriteLine("WuhanFactory produces duck wings.");
        }
    }

    //定义类NanjingFactory,实现接口 IProductionFactory
    class NanjingFactory :IProductionFactory
    {
        //只生产鸭翅
        public void DuckNeckProduction()
        {
            Console.WriteLine("NanjingFactory does not produce duck necks.");
        }
        public void DuckWingProduction()
        {
            Console.WriteLine("NanjingFactory produces duck wings.");
        }
    }

    //定义类ChanngshaFactory,实现接口 IProductionFactory
    class ChanngshaFactory :IProductionFactory
    {
        //只生产鸭脖
        public void DuckNeckProduction()
        {
            Console.WriteLine("ChangshaFactory produces duck necks.");
        }
        public void DuckWingProduction()
        {
            Console.WriteLine("ChangshaFactory does not produce duck wings.");
        }
    }

    internal class Factory
    {
        //定义ProductionDelegate
        public delegate void ProductionDelegate();

        static void Main(string[] args) 
        {
            //创建不同的工厂实例
            IProductionFactory wuhanfactory = new WuhanFactory();//武汉工厂
            IProductionFactory nanjingfactory = new NanjingFactory();//南京工厂
            IProductionFactory changshafactory = new ChanngshaFactory();//长沙工厂

            //创建不同的生产委托
            //武汉工厂
            ProductionDelegate wuhanproductionDelegate = wuhanfactory.DuckNeckProduction;
            wuhanproductionDelegate += wuhanfactory.DuckWingProduction;
            //南京工厂
            ProductionDelegate nanjingproductionDelegate = nanjingfactory.DuckNeckProduction;
            nanjingproductionDelegate += nanjingfactory.DuckWingProduction;
            //长沙工厂
            ProductionDelegate changshaproductionDelegate = changshafactory.DuckNeckProduction;
            changshaproductionDelegate += changshafactory.DuckWingProduction;

            //通过生产委托进行生产
            //武汉工厂
            Console.WriteLine("Product of WuhanFactory:");
            wuhanproductionDelegate();
            //南京工厂
            Console.WriteLine("Product of NanjngFactory:");
            nanjingproductionDelegate();
            //长沙工厂
            Console.WriteLine("Product of ChangshaFactory:");
            changshaproductionDelegate();

            Console.ReadLine();
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值