java 使用反射技术解耦

1.调用的代码 /src/de/test.java

package de;
public class Test {
  public static void main(String[] args) {
   Dao dao = DaoFactory.getInstance().getImpl("impl", Dao.class);
  dao.show();
  }

2.配置文件/src/config/config.properties

  impl=de.DaoImpl1

3.接口和2个实现类 (/src/de/Dao.java,DaoImpl1.java,DaoImpl2.java

package de;
public interface Dao {
    void show();
}
package de;
public class DaoImpl1 implements Dao {
    @Override
    public void show() {
        System.out.println(this.getClass().getSimpleName());
    }
}
package de;
public class DaoImpl2 implements Dao {
    @Override
    public void show() {
        System.out.println(this.getClass().getSimpleName());
    }
}

4.解耦类(单例工厂)

package de;

import java.io.InputStream;
import java.util.Properties;

public class DaoFactory {
    private static DaoFactory instance = new DaoFactory();
    public static DaoFactory getInstance() {
        return instance;
    }

    public <T> T getImpl(String key, Class<T> clazz) {
        try {
            Properties properties = new Properties();
            properties.load(DaoFactory.class.getClassLoader().getResourceAsStream("config/config.properties"));
            return (T) Class.forName(properties.getProperty(key)).newInstance();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
时间: 2024-11-05 18:58:42

java 使用反射技术解耦的相关文章

Java的反射技术

1.Java 反射技术 Java反射技术应用广泛,它能够配置:类的全限定名.方法和参数,完成对象的初始化,甚至是反射某些方法.这样可以大大增强Java的可配置性,如Spring IoC 的基本原理也是反射,当然Spring IoC 的代码要复炸得多,还有其他的技术结合. Java 的反射内容繁多, 包括对象的构建.反射方法.注解.参数.接口等.这次主要讲一下对象的构建和反射的方法.在Java中,反射是通过包java.lang.reflect.* 来实现的. 2.通过反射构建对象 在Java中允许

java开发--反射技术

学习目标: 1.什么是反射:即反射的定义, 2.反射有什么作用,能解决什么问题, 3.反射的知识点是什么, 4.反射的利弊 5.反射的例子 1.什么是反射:反射的定义: a) 能够分析类能力的程序被称为反射(reflective) 2.反射的作用,能解决什么问题: 1.在运行中分析类的能力 2.在运行中查看对象 3.实现数组的操作代码 4.利用Method对象,这个对象很像c++中的函数指针 使用反射的主要人员是工具构造者,而不是应用程序员. 反射机制最重要的内容:检查类的结构. 3.反射的知识

小怪兽 Java反射技术 等你来打

Java反射技术,是java的难点,也是程序员进化过程中的必打小怪兽,这里就根据java api好好研究一下java的反射技术. Class Fields Methods 请先回忆一下[java类的定义]. 一.反射是什么 反射是什么?百度百科这样定义:JAVA反射机制是在运行状态下,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取对象信息以及动态调用对象方法的功能称为java语言的反射机制. 可以这样理解,大家小时候有木有玩过平

Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框

原文出处:博主宇宙的极客http://www.cnblogs.com/nokiaguy/archive/2010/07/27/1786482.html 众所周知,AlertDialog类用于显示对话框.关于AlertDialog的基本用法在这里就不详细介绍了,网上有很多,读者可以自己搜索.那么本文要介绍的是如何随心所欲地控制AlertDialog.     现在我们来看看第一个需求:如果某个应用需要弹出一个对话框.当单击“确定“按钮时完成某些工作,如果这些工作失败,对话框不能关闭.而当成功完成工

反射技术阻止对话框关闭

Java中反射机制:     允许运行中的程序对自身进行检查,并能直接操作程序内部的属性或者方法.                理解:    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:                             对于任意一个对象,都能够调用它的任意一个方法:                             这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 反射机制的实现借助4个类:  clas

如何利用缓存机制实现JAVA类反射性能提升30倍

一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> 分享者:宜信支付结算部支付研发团队高级工程师陶红 原文首发于宜信支付结算技术团队公号:野指针 在实际工作中的一些特定应用场景下,JAVA类反射是经常用到.必不可少的技术,在项目研发过程中,我们也遇到了不得不运用JAVA类反射技术的业务需求,并且不可避免地面临这个技术固有的性能瓶颈问题. 通过近两年的研究.尝

Java中类加载机制和反射技术

我们知道一个对象在运行时有两种类型,一个是编译类型,一个是运行时类型.在程序运行时,往往是需要发现类和对象的真实的信息的.那么如何获的这种信息呢? 其一,如果我们在编译和运行时都知道类型的具体信息,这时是可以手动将一个对象转换为运行时的类型. 其二,如果我们在编译时无法预知对象和类到底是属于哪些类,那么程序只有依靠运行时的信息来发现对象和类的真实的信息了,这时就必须要用到反射技术. 在谈具体的发射技术之前,我想先回顾下,有关类的加载的一些基本的性质和原理,以方便我们更好地理解,反射的作用和特点.

Java反射技术学习总结

-------<a href="http://www.itheima.com/"">android培训</a>.<a href="http://www.itheima.com/" ">java培训</a>期待与您交流!---------- Java反射技术就是将java中的类的各个组成部分反射出来变为java中相应的数据类型获得. Java同样将类中的各个组成部分进行封装,变为一个个Java类. C

Android中Java反射技术的使用示例

import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * Android中Java反射技术的使用示例 * 在Java中描述字节码文件(xxx.class)的类叫Class * 反射的过程可视为剖析Class的过