zoukankan      html  css  js  c++  java
  • 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");

       }

    }

  • 相关阅读:
    [转] Oracle数据库备份与恢复
    Oracle RMAN 恢复控制文件到指定的路径
    [转] AIX lv 4k偏移量
    关于oracle 10g creating datafile with zero offset for aix
    linux中的chage命令
    [转] Oracle sql 查询突然变慢 -- 案例分析
    [转] Oracle analyze table 使用总结
    [转] Oracle analyze 命令分析
    .net 事务
    _BIN 二进制排序
  • 原文地址:https://www.cnblogs.com/oftenlin/p/3096636.html
Copyright © 2011-2022 走看看