你的位置:首页 > Java教程

[Java教程]用反射改进工厂模式


原来的工厂模式代码的局限在于每当我们添加一个接口的子类时,工厂类的代码必须改动,我们可以用反射来改进这一点。代码如下:

package com.test;interface Fruit{  public void eat();}class Apple implements Fruit{  @Override  public void eat() {    System.out.println("eat apple!");      }}class Orange implements Fruit{  @Override  public void eat() {    System.out.println("eat orange!");      }}class Factory{  public static Fruit getInstance(String name){    Fruit f = null;    try {      Class<?> cls = Class.forName(name);      f = (Fruit)cls.newInstance();    } catch (Exception e) {      e.printStackTrace();    }    return f;  }}public class TestDemo {  public static void main(String[] args) {    Fruit f = Factory.getInstance("com.test.Apple");    f.eat();    f = Factory.getInstance("com.test.Orange");    f.eat();  }}