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);
}
}
}
java 使用反射技术解耦的更多相关文章
- Java的反射技术
什么是反射机制 Java的反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能调用它的任意属性和方法.这种动态获取信息以及动态调用对象属性和方法的即使称为J ...
- Java采用反射技术创建对象后对目标类的成员变量和成员方法进行访问
实现: package com.ljy; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * * @Class ...
- Java通过反射技术动态创建对象(有参、无参构造)
实现类: package com.ljy; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTarge ...
- java开发--反射技术
学习目标: 1.什么是反射:即反射的定义, 2.反射有什么作用,能解决什么问题, 3.反射的知识点是什么, 4.反射的利弊 5.反射的例子 1.什么是反射:反射的定义: a) 能够分析类能力的程序被称 ...
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
原文出处:博主宇宙的极客http://www.cnblogs.com/nokiaguy/archive/2010/07/27/1786482.html 众所周知,AlertDialog类用于显示对话框 ...
- 如何利用缓存机制实现JAVA类反射性能提升30倍
一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> ...
- 黑马程序员:Java编程_反射技术
=========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== Java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性 ...
- java 反射技术
什么是反射?反射就是将字节码中的各种成分映射到相应的java类中来,java反射技术自JDK1.1以来就出现了,目前大多数流行的框架都采用了这种技术,可见其重要性,这篇文章将详细介绍我对java反射技 ...
- Android中Java反射技术的使用示例
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Metho ...
随机推荐
- SqlServer基础:Bit类型
SqlServer的bit类是只0或者1,默认不输入值时为null,但是如果输入的值不是0和1时,则默认填充的值为1
- Flume-ng+Kafka+storm的学习笔记
Flume-ng Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统. Flume的文档可以看http://flume.apache.org/FlumeUserGuide.html ...
- play 之定时器job
play定时任务之job 要创建一个Job,只需要简单地继承play.jobs.Job类就可以. 一些常用的注解: @Every("1h") 每隔1小时执行一次 @ ...
- 在Hyper-V的虚拟机中使用无线网络
今天在WINDOWS 8.1中装了WINDOWS 7的虚拟机,但默认情况下只能共享有线网络,而没有无线网络. 解决方法: http://www.elmajdal.net/Win2k8/Enabling ...
- [Android Tips] 3. Launch CallLog Activity
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(android.provider.CallLog.Calls.CONTEN ...
- MyEclipse6.5注册码(转)
新装的MyEclipse6.5在网上找了半天的注册码,都不可用.将下面的代码放在MyEclipse下运行后,可以得到注册码.这相当于一个注册机.我得到的如下: administrator nLR8ZC ...
- 《30天自制操作系统》02_day_学习笔记
helloos3: helloos.nas的解释在P29中 接下来课本讲了一些汇编语言的知识,便于理解这个汇编文件helloos4: 讲解在P41 helloos.nas后半部分去掉就成了ipl.as ...
- .pch头文件的添加
在工程中找Building Settings --> language -->prefix Header -->填写.pch的路径
- C++Primer 第七章
//1.定义在类内部的函数是隐式内联的. //2.默认情况下,this指针的类型是指向类类型非常量版本的常量指针.对于类的常量成员函数的声明方法是:将const放置于成员函数的参数列表后,用于修饰th ...
- SQL order 排序
select * from emp;