工厂方法模式
简单工厂模式将产品封装起来,这样我们只需要告诉工厂我需要什么产品,你给我生产什么产品就可以,
但是,我现在想要生产一个轮胎,目前的工厂都不能生产,那么,我要么给钱,让这个工厂可以生产轮胎,但这样费用太高,那我们使用另一个办法,找一个新的工厂.这样,我们就有必要把工厂给抽象出来.
1\抽象工厂类,每个工厂生产自己的产品
public abstract class FactoryAll { public abstract Product CreateProduct(); } public class ScrewFactory : FactoryAll { public override Product CreateProduct() { Product screw = new Screw(); return screw; } } public class NutFactory : FactoryAll { public override Product CreateProduct() { Product nut = new Nut(); return nut; } }
这样,我们想要什么产品,只需要找对应的工厂就可以了,没有轮胎工厂,没关系,我们找一个轮胎工厂,就可以了
public class TireFactory : FactoryAll { public override Product CreateProduct() { Product tire = new Tire(); return tire; } }
现在,我们找到了一个工厂可以生产轮胎,那我们就可以告诉这个工厂,我需要一个轮胎
static void Main(string[] args) { FactoryAll screwFactory = new ScrewFactory(); Product screw= screwFactory.CreateProduct(); screw.PrintProduct(); FactoryAll tireFactroy = new TireFactory(); Product tire = tireFactroy.CreateProduct(); tire.PrintProduct(); Console.ReadKey(); }
现在,我们如果再想要其他部件,只要找对应的工厂就可以了,这样就解决了简单工厂模式中难以扩展的问题.