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

       }

    }

  • 相关阅读:
    合并n个链表
    合并2个链表
    删除链表中的倒数第n个元素
    判断字符串是否回文字符串
    回文链表
    反转链表
    反转链表2
    冒泡排序法
    编译datax(3.x版本)踩的坑,记录修改记录
    Python基本知识(6)——集合
  • 原文地址:https://www.cnblogs.com/oftenlin/p/3096636.html
Copyright © 2011-2022 走看看