windows程序设计课程作业-1

目录

1、作业内容

2、主要思路

(1)写接口

(2)写类具体实现接口

(3)声明委托

(4)创建实例

(5)实例化委托

3、难点分析

1)想明白接口的作用

2)委托的作用

4、实现代码

5、运行结果


1、作业内容

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

具体要求如下:

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

作业要求

请以博客方式提交作业,博客内容需要对代码行进行讲解,阐述设计的主要思路与难点。
请注意,如果想达到博客网站如csdn的优质博文的质量分,需要对博客进行详细描述。
提交方式为提交博客发布地址,并附上本博文的质量分。

2、主要思路

(1)写接口

按照要求去写一个接口,里面有生产鸭脖和鸭翅的方法,不用具体实现

定义了一个名为IProductionFactory的接口,该接口包含了两个方法:Pr_dnPr_dw

实现该接口的类需要提供这两个方法的具体实现。

interface IProductionFactory
{
    void Pr_dn();//生产鸭脖
    void Pr_dw();//生产鸭翅
}

 参考讲解:

87 C#教程-接口使用_哔哩哔哩_bilibili

(2)写类具体实现接口

然后去写三个类,分别去具体实现接口和接口内的方法

实现了IProductionFactory接口的WuhanFactory类。该类包含了Pr_dnPr_dw方法的具体实现,分别输出"生产鸭脖"和"生产鸭翅"的信息。

internal class WuhanFactory : IProductionFactory
{
    public void Pr_dn() 
    { 
        Console.WriteLine("生产鸭脖"); 
    }

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

(3)声明委托

创建实例,最后用委托来实现具体生产的统一管理

    delegate void ProductionDelegate();

(4)创建实例

Main函数中,首先创建了WuhanFactoryNanjingFactoryChangshaFactory的实例,分别赋值给wuhanFactorynanjingFactorychangshaFactory变量。

IProductionFactory wh = new WuhanFactory();
IProductionFactory nj = new NanjingFactory();
IProductionFactory cs = new ChangshaFactory();

(5)实例化委托

然后,定义了一个生产委托productionDelegate,并将wuhanFactory.ProduceDuckNeckwuhanFactory.ProduceDuckWingnanjingFactory.ProduceDuckWing和ChangshaFactory.ProduceDuckNeck方法依次添加到委托中。

最后,通过调用prodCuctionDelegate.Invoke()来触发D委托,依次执行委托中包含的各个工厂的生产方法。

ProductionDelegate productionDelegate = wh.Pr_dn;
//利用+=将方法添加到委托的调用列表里
productionDelegate += wh.Pr_dw;
productionDelegate += nj.Pr_dw;
productionDelegate += cs.Pr_dn;

productionDelegate.Invoke();

 参考讲解:

91 C#教程-委托_哔哩哔哩_bilibili

92 C#教程-委托的多播_哔哩哔哩_bilibili

3、难点分析

1)想明白接口的作用

接口本身并实现任何功能,他只是声明实现该接口的对象必须实现的功能。

所以要实现下面这个功能需要接口来完成。

武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。

 2)委托的作用

通过委托,可以将多个工厂的生产方法统一管理。调用代码只需要调用委托一次,就可以依次执行多个工厂的生产方法,无需逐个调用每个工厂的方法。这样可以简化代码,提高可读性和可维护性。

同时,他也可以轻松地添加、删除或替换不同工厂的生产方法。

使用+=操作符可以动态地向委托中添加方法,从而实现对多个方法进行管理和调用。这样可以方便地扩展和修改委托的调用列表,而无需修改调用委托的代码。

productionDelegate += wh.Pr_dw;

4、实现代码

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

namespace work_test
{
    delegate void ProductionDelegate();
    interface IProductionFactory
    {
        void Pr_dn();//生产鸭脖
        void Pr_dw();//生产鸭翅
    }

    internal class WuhanFactory : IProductionFactory
    {
        public void Pr_dn() 
        { 
            Console.WriteLine("生产鸭脖"); 
        }

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

    internal class NanjingFactory : IProductionFactory
    {
        public void Pr_dw() 
        {
            Console.WriteLine("生产鸭翅");
        }

        public void Pr_dn()
        {
            Console.WriteLine("不能生产鸭脖");
        }
    }

    class ChangshaFactory : IProductionFactory
    {
        public void Pr_dn() 
        { 
            Console.WriteLine("生产鸭脖"); 
        }

        public void Pr_dw()
        {
            Console.WriteLine("不能生产鸭翅");
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            IProductionFactory wh = new WuhanFactory();
            IProductionFactory nj = new NanjingFactory();
            IProductionFactory cs = new ChangshaFactory();

            ProductionDelegate productionDelegate = wh.Pr_dn;
            productionDelegate += wh.Pr_dw;
            productionDelegate += nj.Pr_dw;
            productionDelegate += cs.Pr_dn;

            productionDelegate.Invoke();
            Console.ReadLine();
        }
    }
}

5、运行结果

vs运行结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值