周黑鸭的生产流程

我们使用进行 C# 编码,实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。

从上面的需求来看,我们定义 IProductionFactory接口,这个接口要包含生产鸭脖和鸭翅的方法。再定义相关类用于对接口的实现。

接下来我们一步一步去实现:

1.接口 IProductionFactory

这个接口定义了两个方法 ProduceDuckNeck() 和 ProduceDuckWing(),用来表示工厂能够生产的产品。所有工厂类都需要实现这个接口,并提供这两个方法的具体实现。

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

 

2.具体工厂类

WuhanFactoryNanjingFactory 和 ChangshaFactory 分别实现了接口 IProductionFactory。每个工厂类都提供了对应产品的生产方法的具体实现。例如,WuhanFactory 实现了生产鸭脖和鸭翅的方法,而 NanjingFactory 只实现了生产鸭翅的方法,ChangshaFactory 只实现了生产鸭脖的方法。

3.委托 ProductionDelegate

这是一个委托类型,用于表示生产的委托。它可以引用一个或多个具有相同签名的方法。在这个示例中,ProductionDelegate 委托可以引用生产鸭脖或鸭翅的方法。

public delegate void ProductionDelegate();

4.Main 函数

  • 在 Main 函数中,首先创建了三个不同工厂的实例:WuhanFactoryNanjingFactory 和 ChangshaFactory
  • 然后定义了 ProductionDelegate 委托对象,用于调用不同工厂的生产方法。
  • 对于每个工厂,将相应的生产方法添加到委托中,然后调用委托的 Invoke 方法来执行所有添加的方法。
  • 最后输出了每个工厂生产的产品情况。
class Program
{
    static void Main(string[] args)
    {
        // 创建不同工厂的实例
        WuhanFactory wuhanFactory = new WuhanFactory();
        NanjingFactory nanjingFactory = new NanjingFactory();
        ChangshaFactory changshaFactory = new ChangshaFactory();

        // 生产委托
        ProductionDelegate productionDelegate;

        // Wuhan Factory can produce both Duck Neck and Duck Wing
        productionDelegate = wuhanFactory.ProduceDuckNeck;
        productionDelegate += wuhanFactory.ProduceDuckWing;

        Console.WriteLine("Producing at Wuhan Factory:");
        productionDelegate.Invoke();
        Console.WriteLine();

        // Nanjing Factory can only produce Duck Wing
        productionDelegate = nanjingFactory.ProduceDuckNeck;
        productionDelegate += nanjingFactory.ProduceDuckWing;

        Console.WriteLine("Producing at Nanjing Factory:");
        productionDelegate.Invoke();
        Console.WriteLine();

        // Changsha Factory can only produce Duck Neck
        productionDelegate = changshaFactory.ProduceDuckNeck;
        productionDelegate += changshaFactory.ProduceDuckWing;

        Console.WriteLine("Producing at Changsha Factory:");
        productionDelegate.Invoke();
    }
}

到这里我们就完成了一个大体的流程,接下来我们跑一下看看结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值