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 ...
随机推荐
- linux查看防火墙状态及开启关闭命令(转)
存在以下两种方式: 一.service方式 查看防火墙状态: [root@centos6 ~]# service iptables status iptables:未运行防火墙. 开启防火墙: [ro ...
- 分享一些App常用的模块
2016年上半年 APICloud合作云服务商提供了各种类型模块多达45个 其中最新发布的重要模块有 美洽客服模块 亲加视频直播相关模块 保利威视视频播放器模块 苹果银联支付模块 贝宝支付模块 谷歌分 ...
- 分布式消息系统Kafka初步
终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到.从这一篇开始分布式消息系统的入门. 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到 ...
- xp系统的安装SVN
xp系统安装SVN,出现错误: 解决办法: 1,首先确定xp体统是否为sp3,SVN安装需要在sp3以上: 2,检查windows Installer是否开启,解决:控制面板-管理工具-服务—wind ...
- UIScorlView 循环滚动
- (void) createAdScrollView { _view = [[UIView alloc] initWithFrame:CGRectMake(, , WIDTH, )]; [self. ...
- 点云匹配和ICP算法概述
Iterative Closest Point (ICP) [1][2][3] is an algorithm employed to minimize the difference between ...
- iOS Reachability的基本用法
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- 仿Smarty替换模板标签时遇到的问题
最近正在做一个微型的仿TP框架,当然以鄙人之技术只能略仿表层,于是遇到的问题层出不穷.今天做到View层替换模板部分,本以为一下子搞掂的事,果不其然又是败下阵来. 好了,来重点. 模板文件 test1 ...
- struts标签小记
1.<s:iterator>标签的 奇偶数行使用不同样式 <s:iterator id="list" value="#request.listq&qu ...
- 仅使用处理单个数字的I/O例程,编写一个过程以输出任意实数(可以是负的)
题目取自:<数据结构与算法分析:C语言描述_原书第二版>——Mark Allen Weiss 练习1.3 如题. 补充说明:假设仅有的I/O例程只处理单个数字并将其输出到终端,我们将这 ...