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");

       }

    }

  • 相关阅读:
    Spring Bean Expression Language(EL)
    Spring-web-security Issue (Access is denied. User must have one of the these roles: ACTUATOR)
    数据库学习笔记day04
    数据库学习笔记day03
    数据库学习笔记day01+day02
    Java学习笔记--线程day01
    Java学习笔记-Java文件操作流
    第一次月测题
    第一次月测内容疑问总结
    java核心API
  • 原文地址:https://www.cnblogs.com/oftenlin/p/3096636.html
Copyright © 2011-2022 走看看