利用反射机制创建实例化对象工厂

来源:互联网 发布:金石工程计价软件 编辑:程序博客网 时间:2024/05/16 04:47
/**
 * 利用反射机制创建实例化对象 实现不同类的实例化创建
 * 该工厂类根据不同的类路径创建生产不同类的实例化对象
 * @author erik
 *
 */
public class Factory {
    /**
     * 根据完整的类路径和名称创建该类的实例化对象
     * @param className  完整的类路径及名称
     * @return T  
     * @throws Exception
     */
   public static <T> T getInstance(String className) throws Exception {
       @SuppressWarnings("unchecked")
    T t = (T) Class.forName(className).newInstance();
       return t;
   }
   /**
    * 根据不同的类文件创建该类的示例化对象
    * @param class  
    * @return  T
    * @throws Exception
    */
 
public static <T> T getInstance(Class<?> cls) throws Exception {
       T t = (T) cls.newInstance();
       return t;
   }
   private Factory () {}

}


public class TestDemo {
    public static void main(String[] args) {
        try {
            //根据完整类路径创建实例化对象
            ICar car = Factory.getInstance("com.product.car.Benci");
            car.driveCae();
            
            IFruit iFruit = Factory.getInstance("com.product.fruit.Apple");
            iFruit.ect();
            
            
            
            //根据类文件创建实例化对象
            Bmw bmw = Factory.getInstance(Bmw.class);
            bmw.driveCae();
            
            Orange orange = Factory.getInstance(Orange.class);
            orange.ect();


        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


}

1 0
原创粉丝点击