工厂方法模式与抽象工厂模式的区别
理解:
可以这么去理解,“抽象工厂模式”这个称呼中的“抽象”是一个动词,即对工厂方法模式进行了抽象,就变成了抽象工厂模式,这么理解后,就不难看出它们的区别:
工厂方法模式:每个抽象产品派生多个具体产品类,
抽象工厂模式: 每个抽象工厂类派生多个具体工厂类,每个具体工厂类负责一个具体产品的实例创建;
客户端调用的区别:
工厂:
SomeFactory fac = new SomeFactory ();
Some s = fac.create();
抽象工厂:
AbstractFactory fac; switch (style) { case MAC: fac = new MacFactory; break; case WIN: fac = new WinFactory; break; } Button button = fac.CreateButton(); Border border = fac.CreateBorder();
可见抽象工厂抽象了一系列的创建者(工厂),它体现了面向接口的思想。