【设计模式】工厂方法模式/抽象工厂模式
1.工厂方法模式
1. UML
比简单工厂更符合开闭原则,简单工厂依赖具体类,当增加具体类时就需要修改SimpleFactory类。
MethodFactoryPattern将工厂类也进行抽象,具体工厂类继承抽象工厂类,每个具体工厂类只负责创建一种具体类的实例。当具体类种类增加时,只需要增加具体工厂类,对扩展开放。
abstract class Product
{
public abstract void func();
}
class ProductA:Product
{
public void func()
{
Console.WriteLine("ProductA");
}
}
class ProductB:Product
{
public void func()
{
Console.WriteLine("ProductB");
}
}
abstract class MethodFactory
{
public abstract Product GetProduct();
}
class ProductAFactory
{
public Product GetProduct()
{
return new ProductA();
}
}
class ProductBFactory
{
public Product GetProduct()
{
return new ProductB();
}
}
MethodFactory factory; //抽象工厂
factory = new ProductAFactory(); //创建ProductA的工厂
Product pp = factory.GetProduct();
pp.func();