Windows程序设计课程作业一

1.作业要求

        

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

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

2.定义接口

public interface IProductionFactory
{
    void ProduceDuckNeck();
    void ProduceDuckWing();
}
  • 这个接口定义了两个方法ProduceDuckNeck()ProduceDuckWing(),用于表示工厂生产鸭脖和鸭翅的行为。通过接口,实现了工厂类之间的统一标准。这样,不同工厂的生产过程可以通过相同的接口方法进行管理。

3.定义委托

delegate void ProductionDelegate();
  • 这个委托用作生产委托,允许将一个或多个方法关联到委托实例上。这里,委托用于将生产行为绑定到特定的工厂实例中,通过委托来调用生产方法。

4.定义类

4.1 武汉工厂类

class WuhanFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Wuhan Factory produces Duck Neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Wuhan Factory produces Duck Wing.");
    }
}

4.2 南京工厂类

class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Nanjing Factory does not produce Duck Neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Nanjing Factory produces Duck Wing.");
    }
}

4.3 长沙工厂类

class ChangshaFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Changsha Factory produces Duck Neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Changsha Factory does not produce Duck Wing.");
    }
}

  • 这三个类分别实现了IProductionFactory接口,具体实现了各自工厂能生产的不同的周黑鸭产品。每个工厂类实现了生产鸭脖和鸭翅的方法,根据工厂的生产能力不同进行了不同的实现。

5.功能实现

5.1 主函数实现 

class Program
{
    static void Main()
    {
        // 实例化不同工厂
        WuhanFactory wuhanFactory = new WuhanFactory();
        NanjingFactory nanjingFactory = new NanjingFactory();
        ChangshaFactory changshaFactory = new ChangshaFactory();

        // 使用委托生产
        ProductionDelegate productionDelegate;

        // 武汉工厂生产
        productionDelegate = wuhanFactory.ProduceDuckNeck;
        productionDelegate += wuhanFactory.ProduceDuckWing;
        Console.WriteLine("Products from Wuhan Factory:");
        productionDelegate();

        Console.WriteLine();

        // 南京工厂生产
        productionDelegate = nanjingFactory.ProduceDuckNeck;
        productionDelegate += nanjingFactory.ProduceDuckWing;
        Console.WriteLine("Products from Nanjing Factory:");
        productionDelegate();

        Console.WriteLine();

        // 长沙工厂生产
        productionDelegate = changshaFactory.ProduceDuckNeck;
        productionDelegate += changshaFactory.ProduceDuckWing;
        Console.WriteLine("Products from Changsha Factory:");
        productionDelegate();
    }
}

在Main函数中,首先实例化了武汉工厂、南京工厂和长沙工厂的对象。然后通过创建委托实例,将每个工厂实例的生产方法与委托绑定。通过调用委托,可以实现对不同工厂的生产行为的管理和调用。 

5.2 结果展示  

Products from Wuhan Factory:
Wuhan Factory produces Duck Neck.
Wuhan Factory produces Duck Wing.

Products from Nanjing Factory:
Nanjing Factory does not produce Duck Neck.
Nanjing Factory produces Duck Wing.

Products from Changsha Factory:
Changsha Factory produces Duck Neck.
Changsha Factory does not produce Duck Wing.

 

6.设计思路与难点 

6.1 设计思路

  • 通过定义接口和委托,实现了工厂生产行为的抽象和统一管理。工厂类实现了接口定义的生产方法,使工厂之间的操作具备一致性,方便扩展和维护。
  • 使用委托将生产行为与具体工厂实例解耦,实现了生产操作的灵活性和可配置性。通过委托,可以动态切换和管理不同工厂的生产任务。

6.2 主要难点

  • 需要较好的理解委托的概念和用法,知道将委托与对应方法绑定,实现对不同工厂生产行为的统一性管理。
  • 需要熟悉接口的概念和作用,以及通过接口来定义规范的生产行为。
  • 需要考虑不同工厂的生产能力差异,确保每个工厂类都能正确实现接口定义的生产方法。

 7.完整代码

using System;

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

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

// 实现武汉工厂
class WuhanFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Wuhan Factory produces Duck Neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Wuhan Factory produces Duck Wing.");
    }
}

// 实现南京工厂
class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Nanjing Factory does not produce Duck Neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Nanjing Factory produces Duck Wing.");
    }
}

// 实现长沙工厂
class ChangshaFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("Changsha Factory produces Duck Neck.");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("Changsha Factory does not produce Duck Wing.");
    }
}

class Program
{
    static void Main()
    {
        // 实例化不同工厂
        WuhanFactory wuhanFactory = new WuhanFactory();
        NanjingFactory nanjingFactory = new NanjingFactory();
        ChangshaFactory changshaFactory = new ChangshaFactory();

        // 使用委托进行生产
        ProductionDelegate productionDelegate;

        // 武汉工厂生产
        productionDelegate = wuhanFactory.ProduceDuckNeck;
        productionDelegate += wuhanFactory.ProduceDuckWing;
        Console.WriteLine("Products from Wuhan Factory:");
        productionDelegate();

        Console.WriteLine();

        // 南京工厂生产
        productionDelegate = nanjingFactory.ProduceDuckNeck;
        productionDelegate += nanjingFactory.ProduceDuckWing;
        Console.WriteLine("Products from Nanjing Factory:");
        productionDelegate();

        Console.WriteLine();

        // 长沙工厂生产
        productionDelegate = changshaFactory.ProduceDuckNeck;
        productionDelegate += changshaFactory.ProduceDuckWing;
        Console.WriteLine("Products from Changsha Factory:");
        productionDelegate();
    }
}

 8.实验小结

通过这样的实验设计,实现了对周黑鸭工厂产品生产的灵活统一管理,且代码具有扩展性和可维护性,比较方便后续添加新的工厂或者调整生产流程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值