java 怎么动态实现多例
Java动态生成一个类的多个实例,这些实列对象只生成一次,多次使用
一个类控制为只产生一个类实例,则是单例,如果,现在想生成该类的多个实例,每个实例只实例化一次,下次要使用判断是否有对应一个实例,有则直接使用,没有则实例化一个新的。
或者如何封装下面一段代码,写成类
VideoProcessorJNI videoptr = new VideoProcessorJNI();
VideoProcessorJNI videoptr2 = new VideoProcessorJNI();
videoptr.VideoProcessInit("101");//构造函数的参数是101,生成101实例
videoptr2.VideoProcessInit("102");//构造函数的参数是102,生成102实例
while(true){
videoptr.VideoProcessGetimg("/home/jni/5.jpg");
videoptr2.VideoProcessGetimg("/home/jni/6.jpg");
}
101,102这些构造函数中的参数是动态获取的,使用spring boot框架
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
用一个HashMap保存不就好了
单例构造函数添加一个参数(懒汉式),构造函数中传入参数
目前这样实现至少感觉是实现了问题描述的现象,有大神方便指出下这个单例的机制吗?
题主,你好
看到你这个问题,我最开始联想到了
Spring
的控制反转,这很相似,就是实例有一个统一管理的地方,只是题主要求是根据参数不同来区分是否要创建新的实例,也就是说,实例创建决定于参数,那我们再更引申一点,不同的参数,若是不止不同于值,更不同在个数和类型上的话,那此时,实例创建决定于与参数和构造方法所以下面的代码会把两个因素都考虑进去,结合我自己理解题主的意思,我总结了整个问题需要进入怎样的步骤最终创建一个实例出来,其实就是怎么写这个实例工厂
那现在我新增一个实例工厂类
InstanceFactory<T>
,这个类中保存了某一个类<T>
的所有构造函数,也保存了该类所有的参数值+构造函数+实例的信息(这里有一个泛型,是方便最终你拿到的实例就是所要的实例,不用强转)所以我要初始化某一个工厂时,我采用了这个
init
方法进行初始化,由于InstanceFactory<T>
初始化中对于参数值+构造函数是一个固定的数据,所以把这个工厂写成了静态变量放在了所需要创建实例的类VideoProcessorJNI
中当然最终我会采取一个简单的
public T get(Object ... params)
方法,来获取实例值,由于参数可变,所以get方法的参数也是可变的现在我们就可以来填补刚才那几个方法了,首先是
init
方法,由于我们要保存参数类型+构造函数的关系,以及参数值+参数值+构造函数+实例的关系,所以会有两个map
来存储关系所以
init
方法就简单了,我们只需要初始化constructorMap
即可,并最终创建这个工厂返回constructorMap
的key
其实就是当前参数类型的全名用'-'
拼起来的初始化了
constructorMap
,我们现在就可以来做get
方法的处理了其实方法看起来也挺简单的,下面是
InstanceFactory<T>
的完整代码下面可以来做一下测试
运行结果
以上就是我个人的看法,仅供参考