Abstract Factory 抽象工厂模式
抽象工厂是一种创建型模式,是为了解决实例化时所带来的问题。
我们先来看看是什么问题,有的时候我们会遇到这种情况,我们需要一系列的对象。举个例子,有一系列BMW汽车零部件的对象:轮子bmwwheel,油箱bmwoilbox,在一个管理函数中调用它们,代码如下
class BMWWheel{ public BMWWheel(){};} class BMWOilbox{ public BMWOilbox(){};}public void Manage(){ BMWOilbox oilbox = new BMWOilbox(); BMWWheel wheel = new BMWWheel();}public class Test{public static void main(String[] args) { AbstractFactory factory = null; factory = new BMWFactory(); factory.CreatWheel(); System.out.println("\n"); factory.CreatOilBox(); System.out.println("\n"); }}//抽象轮子abstract class AbstractWheel { public AbstractWheel(){}}//抽象邮箱abstract class AbstractOilBox{ public AbstractOilBox(){}}//宝马轮子,继承自抽象轮子class BMWWheel extends AbstractWheel{public BMWWheel(){ System.out.println("Create a BMWwheel"); }}//宝马邮箱,继承自抽象邮箱class BMWOilbox extends AbstractOilBox{public BMWOilbox(){ System.out.println("Create a BMWOilbox"); }}//抽象工厂abstract class AbstractFactory{abstract public AbstractWheel CreatWheel();abstract public AbstractOilBox CreatOilBox();}//宝马工厂class BMWFactory extends AbstractFactory{public AbstractWheel CreatWheel(){ return new BMWWheel(); } public AbstractOilBox CreatOilBox(){ return new BMWOilbox(); }} class BORAWheel extends AbstractWheel{ public BORAWheel() { System.out.println("Create a BORAWheel"); } } class BORAOilBox:AbstractOilBox { public BORAOilBox() { System.out.println("Create a BORAOilBox"); } } 然后我们再创建BORA零件的工厂: class BORAFactory extends AbstractFactory { public AbstractWheel CreatWheel() { return new BORAWheel(); } public AbstractOilBox CreatOilBox(){ return new BORAOilBox(); } } public static void main(String[] args) { AbstractFactory factory = null; factory = new BORAFactory(); factory.CreatWheel(); factory.CreatOilBox(); } 结果如下:修改自:http://www.cnblogs.com/kid-li/archive/2006/04/22/382412.html