java 反射实现 工厂模式_反射技术用于工厂模式

1 反射技术

反射技术大量用于Java设计模式和框架技术,最常见的设计模式就是工厂模式(Factory)和单例模式(Singleton)。

用接口来沟通不同程序的开发进度,不必等上游程序写好代码之后,再注入后面流程的程序员。且在实现上,可以用配置文件灵活变更,而不用重编译整个项目。interface InterfaceTest {

//基于接口规范

public void getName();

}class Test1 implements InterfaceTest {

//不同程序员可以实现不同的重写功能

public void getName() {

System.out.println("test1");

}

}class Test2 implements InterfaceTest {

public void getName() {

System.out.println("test2");

}

}

Factory类如下所示import java.io.FileInputStream;

import java.util.Properties;

class Factory {

private static Properties pro = new Properties();

static {

try {

//通过配置文件来实现载入不同的类,实现不同的功能

pro.load(new FileInputStream("test.property"));

} catch (Exception e) {

e.printStackTrace();

}

}

//保证单例

private static Factory factory = new Factory();

private Factory() {}

public static Factory getFactory() {

return factory;

}

public InterfaceTest getInstance() {

InterfaceTest interfaceTest = null;

try {

//反映功能可灵活实例化不同的类,作框架是很灵活自由的啦

String classInfo = pro.getProperty("test");

Class c = Class.forName(classInfo);

Object obj = c.newInstance();

interfaceTest = (InterfaceTest)obj;

} catch (Exception e) {

e.printStackTrace();

}

return interfaceTest;

}

}

配置文件如下所示test=Test1

测试文件如下所示public class FactoryTest {

public static void main(String[] args) {

System.out.println("~~~~~~~~~~~~~~~~");

Factory factory = Factory.getFactory();

System.out.println("!!!!!!!!!!!!!!!!!");

InterfaceTest inter = factory.getInstance();

System.out.println("@@@@@@@@@@@@@@@@@@");

inter.getName();

System.out.println("##################");

}

}

2 可能存在的问题

这里采用了反射机制,每次Factory返回的都是新的实例,如果你的Factory操作非常频繁,就会返回很多的实例,而这个时候,操作对象类的单例模式就会没有意义,因为实例已经产生了。Class c = Class.forName(classInfo);

Object obj = c.newInstance();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值