factory工厂模式之工厂方法FactoryMethod

工厂方法(Factory Method)
* 工厂方法把不同的产品放在实现了工厂接口的不同工厂类(FactoryAImpl,FactoryBImpl...)里面,
* 这样就算其中一个工厂类出了问题,其他工厂类也能正常工作,互相不受影响,
* 以后增加新产品,也只需要新增一个实现工厂接口工厂类,就能达到,不用修改已有的代码

 

代码解释:

1.创建产品接口Product,并创建2个产品子类android手机、Apple手机,都实现Product接口

public interface Product {
    
}
public class Android implements Product{

    public Android() {
        System.out.println("生产一个Android手机...");
    }
}
public class Apple implements Product{

    public Apple() {
        System.out.println("生产一个Apple手机...");
    }
}

2.创建工厂接口,添加生产方法(返回值是Product),并针对每个产品,创建对应的工厂实现类

public interface Factory {
    
    /**
     * 生产一个产品
     * @return
     */
    public Product process();
}
public class AndroidFactory implements Factory {

    @Override
    public Product process() {
        return new Android();
    }
}
public class AppleFactory implements Factory {

    @Override
    public Product process() {
        return new Apple();
    }
}

3.客户端调用:Test

public static void main(String[] args) {
//        Factory factory = new AppleFactory();//苹果工厂
        Factory factory = new AndroidFactory();//安卓工厂
        factory.process();
    }

这样,只需要修改new XXXFactory()就可以生产该工厂对应的产品

 

* 缺陷:
* 工厂方法为每种类型的产品(比如手机类、汽车类...)的 每个实现类(比如手机类[安卓工厂、苹果工厂] 汽车类[宝马工厂、奔驰工厂])创建一个对应的工厂类,当有数百种甚至上千种产品的时候,也必须要有对应的上百成千个工厂类,这就出现了传说的类爆炸,对于以后的维护来说,简直就是一场灾难.....

posted @ 2016-01-22 21:22  艺言弈行  阅读(416)  评论(0编辑  收藏  举报