windows程序课程使用 C# 对周黑鸭工厂的生产统一管理

目录

一、题目介绍

二、定义生产工厂接口 

1.接口定义

 2.代码实现

三、实现生产工厂接口

1.接口的用法

2.接口的作用

3.接口的操作

四、定义生产委托

1.委托定义

2.委托用法

3.委托的操作

4.代码实现

五、整体代码

六、运行结果

七、总结


一、题目介绍

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

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

二、定义生产工厂接口 

1.接口定义

  1.1 接口介绍:接口(interface)是一种定义了一组抽象成员(方法、属性、事件或索引器)的类型。接口定义了一种契约,规定了类或结构体应该实现的成员。

  1.2 案例定义

interface IExampleInterface
{
    // 方法
    void ExampleMethod();

    // 属性
    string ExampleProperty { get; set; }

    // 事件
    event EventHandler ExampleEvent;

    // 索引器
    int this[int index] { get; set; }
}

 2.代码实现

定义生产工厂接口,定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。ProduceDuckNeck() 生产鸭脖,ProduceDuckWing() 生产鸭翅。

代码如下:

public interface IProductionFactory
{
    void ProduceDuckNeck();
    void ProduceDuckWing();
}

三、实现生产工厂接口

1.接口的用法

  1.1 定义规范:接口定义了一组行为规范,所有实现该接口的类都必须提供这些行为的具体实现。

  1.2 多态性:接口提供了一种多态性的实现方式。可以通过接口类型来引用实现该接口的任何类的实例,从而实现不同类的实例对同一方法的调用。

  1.3 解耦:接口可以用于解耦,减少类之间的依赖性。客户端代码可以通过接口来调用方法,而不需要了解具体实现类的细节。

  1.4 实现多继承:C#不支持类的多重继承,但是一个类可以实现多个接口。因此,接口提供了一种实现多继承的方式。

2.接口的作用

  2.1规范:接口定义了类应该具有的行为,使得代码更加规范和可维护。

  2.2多态性:接口提供了一种多态性的实现方式,可以通过接口类型来引用不同类的实例,从而实现统一的方法调用。

  2.3扩展性:通过接口可以实现代码的扩展性,使得系统更容易扩展和修改。

  2.4解耦:接口可以降低类之间的耦合度,提高代码的灵活性和可重用性。

3.接口的操作

武汉工厂(WuhanFactory)、南京工厂(NanjingFactory)、长沙工厂(ChangshaFactory),它们都实现了 IProductionFactory 接口。

4.代码实现

// 武汉工厂实现生产工厂接口
public class WuhanFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("武汉工厂能生生产鸭脖");
    }

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

// 南京工厂实现生产工厂接口
public class NanjingFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("南京工厂不能生产鸭脖");
    }

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

// 长沙工厂实现生产工厂接口
public class ChangshaFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("长沙工厂生产鸭脖");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("长沙工厂不能生产鸭翅");
    }
}

四、定义生产委托

1.委托定义

  1.1委托介绍: 委托(Delegate)是一种类型,用于引用方法。委托可以看作是函数指针,它允许将方法作为参数传递给其他方法,或者将方法存储在数据结构中,以便稍后调用。委托在事件处理、异步编程和回调等场景中非常有用。

  1.2委托定义案例 :委托使用 delegate 关键字定义。委托类型指定了可以被委托引用的方法的签名。委托实例持有对方法的引用,可以调用该方法。

delegate void MyDelegate(string message);

2.委托用法

  2.1事件处理:委托常用于事件处理,当事件触发时,会调用委托引用的方法。

  2.2回调:委托可以作为参数传递给其他方法,允许将方法作为参数传递给其他方法,并在适当的时候调用。

  2.3异步编程:委托与异步编程密切相关,例如通过委托异步调用方法、使用异步回调等。

  2.4扩展方法:委托还可以用于定义扩展方法,允许向现有类型添加新方法。

3.委托的操作

  使用委托 ProductionDelegate 定义生产委托。

public delegate void ProductionDelegate();

创建不同工厂的实例,并通过生产委托进行生产。

4.代码实现

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

    // 使用生产委托进行生产
    ProductionDelegate duckNeckProduction1 = wuhanFactory.ProduceDuckNeck;
    ProductionDelegate duckWingProduction1 = wuhanFactory.ProduceDuckWing;
    ProductionDelegate duckWingProduction2 = nanjingFactory.ProduceDuckWing;
    ProductionDelegate duckNeckProduction2 = changshaFactory.ProduceDuckNeck;

    // 生产
    duckNeckProduction1();
    duckWingProduction1();
    duckWingProduction2();
    duckNeckProduction2();
}

五、整体代码

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()
    {
        Console.WriteLine("南京工厂不能生产鸭脖");
    }

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

// 长沙工厂实现生产工厂接口
public class ChangshaFactory : IProductionFactory
{
    public void ProduceDuckNeck()
    {
        Console.WriteLine("长沙工厂生产鸭脖");
    }

    public void ProduceDuckWing()
    {
        Console.WriteLine("长沙工厂不能生产鸭翅");
    }
}

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

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

        // 使用生产委托进行生产
        ProductionDelegate duckNeckProduction1 = wuhanFactory.ProduceDuckNeck;
        ProductionDelegate duckWingProduction1 = wuhanFactory.ProduceDuckWing;
        ProductionDelegate duckWingProduction2 = nanjingFactory.ProduceDuckWing;
        ProductionDelegate duckNeckProduction2 = changshaFactory.ProduceDuckNeck;

        // 生产
        duckNeckProduction1();
        duckWingProduction1();
        duckWingProduction2();
        duckNeckProduction2();
    }
}

六、运行结果


七、总结

这段代码创建了三个工厂类:武汉工厂(WuhanFactory)、南京工厂(NanjingFactory)、长沙工厂(ChangshaFactory),它们都实现了 IProductionFactory 接口。接着定义了一个生产委托 ProductionDelegate。在 Main 函数中,创建了不同工厂的实例,并使用委托进行了生产。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值