Java的工厂模式(一)

  Java的工厂模式在框架中是用的到很多的,所谓的工厂模式,其实也就是用一个接口来创建对象,把实例化的工作推迟到子类去实现。这样在主函数中就可以直接创建一个工厂类,再通过这个工厂类实现操作。

  假设有一个水果工厂,工厂可以生产香蕉,生产苹果,就可以写成如下代码:

  FruitInterface.java

package com.muggle.project;

//水果接口
public interface FruitInterface {

    public void produce();
}

 

  下面是要生产的香蕉类和苹果类:

  Banana.java

package com.muggle.project;
//生产一个香蕉
public class Banana implements FruitInterface {

    @Override
    public void produce(){
        // TODO Auto-generated method stub
        System.out.println("--------生产了一个香蕉-------");

    }

}

  Apple.java

package com.muggle.project;

public class Apple implements FruitInterface {

    @Override
    public void produce() {
        // TODO Auto-generated method stub
        System.out.println("--------生产了一个苹果-------");

    }

}

 再定义一个水果工厂类

  FruitInterface.java

package com.muggle.project;
//水果工厂
public class FruitFactory {

    public FruitInterface getFruit(String key) {
        if("Banana".equals(key)) {
            return new Banana();        }
        else if ("Apple".equals(key)) {
            return new Apple();
        }
        else {
            return null;
        }
    }
}

  最后就可以通过水果工厂生产香蕉和苹果了

  TestDrive.java

package com.muggle.project;

public class TestDrive {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
/*        不用工厂模式的原始方法
*/
//        FruitInterface banana=new Banana();
//        banana.produce();
//        FruitInterface apple=new Apple();
//        apple.produce();
        
        FruitFactory factory =new FruitFactory();
        FruitInterface banana=factory.getFruit("Banana");
        banana.produce();
    }

}

  结果如下所示,通过这种方法就能实现一个简单的工厂,但是也有一个弊端:就是新加类的时候需要一直else if,下面就介绍一种反射的方法来实现更好的工厂模式。下图是运行结果

 

posted @ 2018-04-16 01:26  Mugglean  阅读(132)  评论(0编辑  收藏  举报