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

       }

    }

  • 相关阅读:
    小黄衫获奖感言
    原型设计
    20210326编程作业
    阅读任务
    准备工作
    cmd命令行批量修改文件名后缀
    【智能算法】模拟退火算法
    【智能算法】粒子群寻优算法
    【并行计算】基于OpenMP的并行编程
    Python科学计算——前期准备
  • 原文地址:https://www.cnblogs.com/oftenlin/p/3096636.html
Copyright © 2011-2022 走看看