Java 设计模式之工厂

一、Bean 工厂的定义

package com.casic.test;

import java.util.Properties;

public class BeanFactory {

   // 声明配置属性

   private static Properties props;

   // 模拟加载配置文件信息

   static {

      props = new Properties();

      // UserDao 的实现方法定义

      props.put("UserDao", "com.casic.test.spring.UserDaoImpl");

   }

   /**

    * 获取Bean 工厂的实例

    * @param clazz 接口声明

    * @return 根据配置生成的对象

    */

   public static <T>T getBeanInstance(Class<T> clazz) {

      // 得到接口的简单限定名

      String className =  //

            props.getProperty(clazz.getSimpleName());

      try {

         // 根据反射得到对象

         return (T) Class.forName(className).newInstance();

      } catch (Exception e) {

         throw new RuntimeException(e);

      }

   }

}

二、Bean 工厂的调用

package com.casic.test;

public class UserServiceImpl {

   // 利用Bean 工厂获得一个UserDao 的实现

   private UserDao userDao = //

         BeanFactory.getBeanInstance(UserDao.class);

   public UserServiceImpl() {

      System.out.println("UserDao 所使用的 Dao :"//

            +userDao.getClass());

   }

}

三、接口定义

package com.casic.test;

public interface UserDao {

   public void printInfo();

}

四、实现定义

package com.casic.test;

public class UserDaoImpl implements UserDao {

    public void printInfo() {

      System.out.println("this is UserDaoImpl");

   }

}

posted @ 2013-05-24 13:01  oftenlin  阅读(133)  评论(0编辑  收藏  举报