将反射用于工厂模式
来源:互联网 发布:淘宝移动卡 编辑:程序博客网 时间:2024/05/21 06:25
将反射用于工厂模式
先来看看,如果不用反射的时候,的工厂模式吧:
http://www.cnblogs.com/rollenholt/archive/2011/08/18/2144851.html
interface fruit{
}
class Apple implements fruit{
}
class Orange implements fruit{
}
// 构造工厂类
// 也就是说以后如果我们在添加其他的实例的时候只需要修改工厂类就行了
class Factory{
}
class hello{
}
这样,当我们在添加一个子类的时候,就需要修改工厂类了。如果我们添加太多的子类的时候,改的就会很多。
现在我们看看利用反射机制:
package Reflect;
interface fruit{
}
class Apple implements fruit{
}
class Orange implements fruit{
}
class Factory{
}
class hello{
}
现在就算我们添加任意多个子类的时候,工厂类就不需要修改。
上面的爱吗虽然可以通过反射取得接口的实例,但是需要传入完整的包和类名。而且用户也无法知道一个接口有多少个可以使用的子类,所以我们通过属性文件的形式配置所需要的子类。
下面我们来看看: 结合属性文件的工厂模式
首先创建一个fruit.properties的资源文件,
内容为:
?
apple=Reflect.Apple
orange=Reflect.Orange
然后编写主类代码:
package Reflect;
import java.io.*;
import java.util.*;
interface fruit{
}
class Apple implements fruit{
}
class Orange implements fruit{
}
//操作属性文件类
class init{
}
class Factory{
}
class hello{
}
际上java在反射创建一个类的实例时,默认会检测是否符合相关安全,该检测开关可以关闭。
Constructor、Field、Method都是继承于AccessibleObject,对应实例调用setAccessible(true)就关闭该开关
如上面的例子,在代码 cts[i].newInstance(null);行前调用上述方法:cts[i].setAccessible(true);
这样就可以创建只有构造函数的实例、调用私有构造方法,访问类的私有属性。
呵呵,这样好像java安全性就大大降低.如果你非常注重应用的安全性,java当然考虑到这方面,你可以在JVM启动参数增加-Djava.security.manager启用安全管理器,如果有该参数,它将检测正在关闭接入检测的代码是否许可了这样做,上述代码执行时会抛出java.security.AccessControlException异常。
转至:http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
- 将反射用于工厂模式
- 将反射用于工厂模式
- 将反射用于工厂模式
- java 反射解析,将反射用于工厂模式【实例】
- 将反射应用在工厂模式上
- 反射工厂模式
- 工厂模式 + 反射改进
- 工厂模式与反射
- 抽象工厂模式+反射
- 反射工厂模式
- 工厂模式中的反射
- 简单工厂模式+反射
- 反射--工厂设计模式
- 利用反射实现工厂模式.
- .Net反射工厂设计模式
- 策略模式+简单工厂+反射
- 简单工厂模式与反射
- java反射实现工厂模式
- Android-sharedUserId数据权限
- Unity学习基本脚本之接口
- Android应用开发的插件化 模块化
- 腾讯产品的创新“渐进式”
- ucos ii 杂记
- 将反射用于工厂模式
- 哲理故事与管理之道(14)-如何留住…
- Android自定义View 控件
- Android 中Parcelable的作用
- 项目进度控制的技术
- 大众点评:下一个百亿公司
- android网络编程_自寻址套接字Data…
- iPhone和Android的控件对比
- 基于即时通信和LBS技术的位置感知…