1、引言
在当今的工业生产中,实现产品的统一管理和高效生产是至关重要的。特别是对于像周黑鸭这样的知名品牌,确保产品的品质、产量和一致性是其保持市场竞争力的关键。为了实现这一目标,我们可以借助C#编程语言,利用接口、类和委托等核心特性,构建一个工厂模式的生产管理系统。
2、具体实现
2.1定义接口
接口是定义一组方法的契约,它声明了方法但不包含方法的实现。
接口IProductionFactory定义了所有工厂都应具备的生产能力,即生产鸭脖和鸭翅的方法。这确保了无论具体是哪个工厂,它们都将遵循相同的规范。
//定义接口 IProductionFactory,包含生产鸭脖和鸭翅的方法。
public interface IProductionFactory
{
void ProduceDuckNeck(); // 生产鸭脖
void ProduceDuckWing(); // 生产鸭翅
}
2.2实现工厂类
定义不同的工厂类来代表不同的生产地点,每个工厂类都实现了相同的接口,以确保它们遵循相同的生产规范。
不同的工厂类(如WuhanFactory、NanjingFactory、ChangshaFactory)实现了IProductionFactory接口,提供了具体的生产逻辑。每个工厂类可以根据自身资源和能力来实现不同的生产方法。
//武汉工厂鸭翅鸭脖
public class WuhanFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("武汉工厂正在生产鸭脖...");
Console.WriteLine("武汉工厂鸭脖生产完成!");
}
public void ProduceDuckWing()
{
Console.WriteLine("武汉工厂正在生产鸭翅...");
Console.WriteLine("武汉工厂鸭翅生产完成!");
}
}
//南京工厂鸭翅
public class NanjingFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
throw new NotSupportedException("南京工厂不生产鸭脖");
}
public void ProduceDuckWing()
{
Console.WriteLine("南京工厂正在生产鸭翅...");
Console.WriteLine("南京工厂鸭翅生产完成!");
}
}
//长沙工厂鸭脖
public class ChangshaFactory : IProductionFactory
{
public void ProduceDuckNeck()
{
Console.WriteLine("长沙工厂正在生产鸭脖...");
Console.WriteLine("长沙工厂鸭脖生产完成!");
}
public void ProduceDuckWing()
{
throw new NotSupportedException("长沙工厂不生产鸭翅");
}
}
2.3引入委托进行生产调用
使用委托 ProductionDelegate 定义生产委托
public delegate void ProductionDelegate();
2.4在 Main
函数中,创建不同工厂的实例,并通过生产委托进行生产
下面演示如何创建不同工厂的实例,并调用它们的生产方法,展示如何使用前面定义的工厂类。
using System;
class Program
{
static void Main(string[] args)
{
// 创建工厂实例
IProductionFactory wuhanFactory = new WuhanFactory();
IProductionFactory nanjingFactory = new NanjingFactory();
IProductionFactory changshaFactory = new ChangshaFactory();
// 调用武汉工厂生产鸭脖
wuhanFactory.ProduceDuckNeck();
// 调用南京工厂生产鸭翅
nanjingFactory.ProduceDuckWing();
// 尝试调用长沙工厂生产鸭脖(这是支持的)
changshaFactory.ProduceDuckNeck();
// 尝试调用长沙工厂生产鸭翅(抛出异常,长沙工厂不生产鸭翅)
try
{
changshaFactory.ProduceDuckWing();
}
catch (NotSupportedException ex)
{
Console.WriteLine(ex.Message);
}
}
}
在这个Main
函数中,我们创建了三个工厂实例:wuhanFactory
、nanjingFactory
和changshaFactory
,它们分别对应武汉工厂、南京工厂和长沙工厂。每个工厂实例都是IProductionFactory
接口类型的,我们可以使用统一的接口来调用它们的方法,而无需关心它们的具体实现。
3.总结
多态性应用:多态性使得主程序可以通过IProductionFactory接口类型的变量来引用任意工厂实例,无需关心其具体实现细节,提高了代码的灵活性和复用性。
异常处理机制:对于不支持的生产操作,工厂类通过抛出NotSupportedException异常来通知调用者,主程序则通过try-catch块捕获并处理这些异常,确保了程序的健壮性。
工厂模式的优势:工厂模式通过抽象工厂类与具体工厂类之间的分离,降低了系统间的耦合度,提高了系统的可扩展性和可维护性。
接口应用:接口的使用确保了所有生产工厂都遵循相同的规范,而具体的实现细节则隐藏在各自的工厂类中,这种设计使得我们可以轻松地添加新的工厂或修改现有工厂的生产逻辑。