周黑鸭工厂产品生产统一管理

文章介绍了如何在C#中使用接口和工厂类设计模式,通过IProductionFactory接口定义了生产鸭脖和鸭翅的方法,然后分别由WuhanFactory、NanjingFactory和ChangshaFactory等具体工厂类实现。同时,展示了如何通过ProductionDelegate委托动态调用不同工厂的生产方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.定义接口和工厂类

1.定义接口 IProductionFactory

2.实现接口 - 武汉工厂 WuhanFactory

3.实现接口 - 南京工厂 NanjingFactory

4.实现接口 - 长沙工厂 ChangshaFactory

二.定义生产委托和使用

1.定义生产委托 ProductionDelegate

2.在 Main 函数中创建工厂实例并使用委托

一.定义接口和工厂类

1. 定义接口 IProductionFactory

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

解读

  • 定义了一个名为 IProductionFactory 的接口,它代表了一个能够生产产品的工厂。
  • 接口中定义了两个方法:ProduceDuckNeck 和 ProduceDuckWing,分别用于生产鸭脖和鸭翅。

2. 实现接口 - 武汉工厂 WuhanFactory 

public class WuhanFactory : IProductionFactory  
{  
    public void ProduceDuckNeck()  
    {  
        Console.WriteLine("武汉工厂生产鸭脖");  
    }  
  
    public void ProduceDuckWing()  
    {  
        Console.WriteLine("武汉工厂生产鸭翅");  
    }  
}

解读

  • WuhanFactory 类实现了 IProductionFactory 接口。
  • 这个类中的方法分别实现了接口中定义的生产鸭脖和鸭翅的功能。

3. 实现接口 - 南京工厂 NanjingFactory

public class NanjingFactory : IProductionFactory  
{  
    public void ProduceDuckNeck()  
    {  
        throw new NotSupportedException("南京工厂不能生产鸭脖");  
    }  
  
    public void ProduceDuckWing()  
    {  
        Console.WriteLine("南京工厂生产鸭翅");  
    }  
}

解读

  • NanjingFactory 类也实现了 IProductionFactory 接口。
  • 对于不能生产的鸭脖,通过抛出 NotSupportedException 异常来表示。
  • 实现了生产鸭翅的方法。

 4. 实现接口 - 长沙工厂 ChangshaFactory

public class ChangshaFactory : IProductionFactory  
{  
    public void ProduceDuckNeck()  
    {  
        Console.WriteLine("长沙工厂生产鸭脖");  
    }  
  
    public void ProduceDuckWing()  
    {  
        throw new NotSupportedException("长沙工厂不能生产鸭翅");  
    }  
}

 

解读

  • ChangshaFactory 类同样实现了 IProductionFactory 接口。
  • 对于不能生产的鸭翅,通过抛出异常来表示。
  • 实现了生产鸭脖的方法。
二、定义生产委托和使用

 5. 定义生产委托 ProductionDelegate

public delegate void ProductionDelegate();

 

解读

  • 定义了一个名为 ProductionDelegate 的委托类型,该委托没有参数,并且没有返回值。
  • 这个委托可以用于引用任何没有参数和没有返回值的方法。

6. 在 Main 函数中创建工厂实例并使用委托

static void Main(string[] args)  
{  
    // 创建不同工厂的实例  
    IProductionFactory wuhanFactory = new WuhanFactory();  
    IProductionFactory nanjingFactory = new NanjingFactory();  
    IProductionFactory changshaFactory = new ChangshaFactory();  
  
    // 定义生产委托实例并关联方法  
    ProductionDelegate produceDuckNeckDelegate = new ProductionDelegate(wuhanFactory.ProduceDuckNeck);  
    ProductionDelegate produceDuckWingDelegate = new ProductionDelegate(nanjingFactory.ProduceDuckWing);  
  
    // 通过生产委托进行生产  
    produceDuckNeckDelegate(); // 使用武汉工厂生产鸭脖的能力  
    produceDuckWingDelegate(); // 使用南京工厂生产鸭翅能力  
  
    // 直接调用长沙工厂生产鸭脖的方法  
    changshaFactory.ProduceDuckNeck();  
}

 

解读

  • 首先,创建了三个工厂实例,分别对应武汉、南京和长沙工厂。
  • 然后,定义了两个委托实例 produceDuckNeckDelegate 和 produceDuckWingDelegate,并将它们分别关联到武汉工厂生产鸭脖的方法和南京工厂生产鸭翅的方法上。
  • 通过调用这两个委托实例,模拟了产品的生产。
  • 最后,直接调用了长沙工厂生产鸭脖的方法作为演示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值