简单工厂就是将创建类的操作封装在一个工厂类中,该工厂只被用来创建类,通常传递一个参数用以指定创建具体哪个类。创建类的方法可以被用来设置成静态方法,这样就不用创建工厂类的实例了,这种工厂也称之为静态工厂。一般情况下我们都使用静态工厂,其缺点是不能通过类的特性如继承和多态来扩展和改变行为,也就是说其违背了设计模式的一个重要原则:开-闭原则(对修改关闭,对扩展开放)。简单工厂实际上就是将创建对象的可能的变化封装在一个具体(工厂)类中,这样工厂内部所作的任何改变不影响客户类(客户依赖的只是工厂类的名字,客户一般情况下都不只一个。)。简单工厂不能称之为一个设计模式,而更像是一种编程习惯,所以这里也就简单描述一下了,:)。
应用场景:所有创建型模式都是用来解决对象创建可能存在的变化,简单工厂也不例外。 简单工厂实现: //产品类 public class Product { } //产品A public class ProductA:Product { } //产品B public class ProductB:Product { } //工厂类 public class SimpleFactory { public static Product CreateProduct(string astg_Type) { //这里常量A,B可以以枚举的形式给出,这样客户将不可能传进错误值。 if (astg_Type == "A") { return new ProductA(); } else if (astg_Type == "B") { return new ProductB(); } else return null; } } //客户类 public class Client { public void GetProducts() { //当工厂类中有任何变动时(例如新增一个C类型),原有的客户类不需要作任何改动。 SimpleFactory.CreateProduct("A");//创建A产品 SimpleFactory.CreateProduct("B");//创建B产品 } }