C简单工厂模式是什么
更新时间:2023-10-05C#简单工厂模式
在C#中,简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,主要用于将对象的创建过程从客户端代码中独立出来,以便于客户端代码不需要知道具体的类名。简单工厂模式在一些需要根据不同条件创建不同类型对象的场景应用广泛。
工厂类
简单工厂模式的核心是工厂类,通过使用工厂类可以创建不同的产品实例并分配给客户端代码。工厂类通常包含一个静态方法,该方法根据客户端代码提供的参数来创建相应的对象实例。
public class SimplePizzaFactory { public Pizza CreatePizza(string type) { Pizza pizza=null; if (type.Equals("cheese")) { pizza=new CheesePizza(); } else if (type.Equals("pepperoni")) { pizza=new PepperoniPizza(); } else if (type.Equals("clam")) { pizza=new ClamPizza(); } else if (type.Equals("veggie")) { pizza=new VeggiePizza(); } return pizza; } }
在上面的代码中,SimplePizzaFactory类包含一个CreatePizza方法,该方法接受一个字符串类型的参数表示要创建的对象类型,根据参数值创建相应的对象实例。如果无法匹配任何对象类型,该方法将返回null。
抽象产品类
抽象产品类是简单工厂模式中产品类的父类,用于定义创建具体产品时所需要的方法和属性。
public abstract class Pizza { public void Prepare() { // 省略准备工作代码 } public void Bake() { // 省略烘培代码 } public void Cut() { // 省略切割代码 } public void Box() { // 省略包装代码 } }
具体产品类
具体产品类是继承了抽象产品类的子类,它们实现了抽象产品类中定义的方法和属性。在简单工厂模式中,客户端代码仅与抽象产品类打交道,而不需要与具体产品类打交道。下面是一个CheesePizza的示例代码:
public class CheesePizza : Pizza { public CheesePizza() { // 省略具体产品实例化代码 } }
客户端代码
客户端代码使用工厂类创建不同的产品实例。客户端代码只需要知道要创建的产品类型,而不需要知道实际的类名。
SimplePizzaFactory factory=new SimplePizzaFactory(); Pizza pizza=factory.CreatePizza("cheese");
在上面的代码中,客户端代码使用工厂类创建一个CheesePizza对象。客户端代码只需要知道要创建的Pizza类型是Cheese,但不需要知道具体的类名。
总结
通过使用简单工厂模式,我们可以将对象的创建过程封装在工厂类中,以便于客户端代码不需要知道具体的类名。工厂类是简单工厂模式的核心,通过工厂类可以创建不同的产品实例并分配给客户端代码。抽象产品类定义了创建具体产品时所需要的方法和属性,而具体产品类实现了抽象产品类中定义的方法和属性。