windows程序设计课程作业一

目录

1、作业内容

2、作业要求

3、主要思路

(1)定义接口

(2)用类实现接口

(3)声明委托

(4)创建委托实例并绑定方法以进行生产

4、难点分析

(1)接口的使用

(2)委托的使用

5、代码实现

6、运行结果


1、作业内容

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

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

2、作业要求

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

3、主要思路

(1)定义接口

        创建一个IProductionFactory接口,其中包含了生产鸭脖和鸭翅的方法声明。

// 定义接口 IProductionFactory
public interface IProductionFactory
{
    void ProduceDuckNeck();
    void ProduceDuckWing();
}

(2)用类实现接口

        分别创建三个具体的工厂类:WuhanFactoryNanjingFactoryChangshaFactory,它们分别实现了IProductionFactory接口。每个工厂类代表了不同城市的工厂,具体实现了鸭脖和鸭翅的生产方法。

// 定义类 WuhanFactory 实现接口 IProductionFactory
public class WuhanFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Wuhan factory produces duck neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Wuhan factory produces duck wing.");
    }
}

// 定义类 NanjingFactory 实现接口 IProductionFactory
public class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        // 南京工厂不能生产鸭脖
        Console.WriteLine("Nanjing factory cannot produce duck neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Nanjing factory produces duck wing.");
    }
}

// 定义类 ChangshaFactory 实现接口 IProductionFactory
public class ChangshaFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Changsha factory produces duck neck.");
    }

    public void ProduceDuckWing()
    {
        // 长沙工厂不能生产鸭翅
        Console.WriteLine("Changsha factory cannot produce duck wing.");
    }
}

(3)声明委托

        声明一个委托用于各工厂具体生产的统一管理。

// 声明委托类型
public delegate void ProductionDelegate();

(4)创建委托实例并绑定方法以进行生产

        在Main函数中,分别创建三个工厂的委托实例,然后将对应工厂类的生产方法绑定到委托实例上。接着就可以通过委托进行生产了。

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

        // 创建并绑定生产委托
        ProductionDelegate wuhanDelegate = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
        wuhanDelegate += wuhanFactory.ProduceDuckWing;

        ProductionDelegate nanjingDelegate = new ProductionDelegate(nanjingFactory.ProduceDuckWing);

        ProductionDelegate changshaDelegate = new ProductionDelegate(changshaFactory.ProduceDuckNeck);

        // 通过生产委托进行生产
        Console.WriteLine("Production in Wuhan:");
        wuhanDelegate();

        Console.WriteLine("\nProduction in Nanjing:");
        nanjingDelegate();

        Console.WriteLine("\nProduction in Changsha:");
        changshaDelegate();
    }
}

4、难点分析

(1)接口的使用

        对于武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖这一要求,我们可以使用接口来实现,因为接口提供了一种标准化的方式来表示类之间的联系,同时实现了多态,使得代码更加的灵活和可拓展。

(2)委托的使用

        使用委托,我们可以实现工厂产品生产的统一管理,而无需调用每个工厂类的方法,这增强了代码的简洁性和可读性。同时,委托还提高了代码的可拓展性和可维护性,使得在未来的需求变更或新增功能时更容易进行修改和扩展。因此,结合作业的需求,使用委托是一种合适的选择,能够有效地管理工厂产品生产的任务。


5、代码实现

using System;

// 定义接口 IProductionFactory
public interface IProductionFactory
{
    void ProduceDuckNeck();
    void ProduceDuckWing();
}

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

// 定义类 WuhanFactory 实现接口 IProductionFactory
public class WuhanFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Wuhan factory produces duck neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Wuhan factory produces duck wing.");
    }
}

// 定义类 NanjingFactory 实现接口 IProductionFactory
public class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        // 南京工厂不能生产鸭脖
        Console.WriteLine("Nanjing factory cannot produce duck neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Nanjing factory produces duck wing.");
    }
}

// 定义类 ChangshaFactory 实现接口 IProductionFactory
public class ChangshaFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Changsha factory produces duck neck.");
    }

    public void ProduceDuckWing()
    {
        // 长沙工厂不能生产鸭翅
        Console.WriteLine("Changsha factory cannot produce duck wing.");
    }
}

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

        // 创建生产委托
        ProductionDelegate wuhanDelegate = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);
        wuhanDelegate += wuhanFactory.ProduceDuckWing;

        ProductionDelegate nanjingDelegate = new ProductionDelegate(nanjingFactory.ProduceDuckWing);

        ProductionDelegate changshaDelegate = new ProductionDelegate(changshaFactory.ProduceDuckNeck);

        // 通过生产委托进行生产
        Console.WriteLine("Production in Wuhan:");
        wuhanDelegate();

        Console.WriteLine("\nProduction in Nanjing:");
        nanjingDelegate();

        Console.WriteLine("\nProduction in Changsha:");
        changshaDelegate();
    }
}

6、运行结果

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值