第一步,定义一个接口类
package factory.face;
/**
* 接口,为了保证返回的对象可以统一用 Product接受
* @author Administrator
*/
public interface Product {
void show();
}
第二步,写两个继承了以上接口的类
package factory.extend;
import factory.face.Product;
public class ProductA implements Product{
@Override
public void show() {
System.out.println("This is Product A!");
}
}
package factory.extend;
import factory.face.Product;
public class ProductB implements Product{
@Override
public void show() {
System.out.println("This is Product B!");
}
}
第三步,工厂类中应用反射机制
package factory.main;
import factory.face.Product;
/**
* 工厂类,在生产具体产品的时候,客户端只需要调用Factory 中的静态方法就可
* @author Administrator
*
*/
public class Factory {
public static Product getProduct(String className) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
return (Product)Class.forName(className).newInstance();
}
public static void main(String[] srgs) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
// System.out.println("WWWW");
// Class<?> classA = Class.forName("factory.extend.ProductA");
// Product aProduct = (Product)classA.newInstance();
// aProduct.show();
Product a= Factory.getProduct("factory.extend.ProductA");
a.show();
Product b=Factory.getProduct("factory.extend.ProductB");
b.show();
}
}