`

遭遇类对象池管理的类的 实例化范围安全问题

阅读更多
同事需要实现一个 统一对象池

这个对象池能注册对象,和类

如果是对象则
通过反射获取其中的类定义
的全路径来 实现对类的唯一存储


为了实现类安全 能够保证 任何注册进来的实现poolObject基类的类 只能在这个对象池中通过 get来获取

就必须 想办法实现 一种唯一标识的方式

因此,  我给他的解决方案是 原型对象实现

在注册进来的原型对象上 标记一个字段 类似Object(Class).prototype.abc = "自定义的常量a",

然后再构造函数中判断Object(Class).prototype.abc 是否和设定好的(自定义的常量b)值一样

默认为不一样 这样就会跑错

然后再 pool中每次get前  先修改这个abc为"自定义的常量b" 然后再new出来返回

然后再修改回"自定义的常量a" 



这样就实现了他的需求 不过....



还有一种方案:
是在这个对象池的内新建一个internal STATIC的字段,当作锁来使用,  而在平时NEW的时候在父类中比较这个字段, 在取的时候比较这个字段,  先修改这个字段, 在从池中剔除一个 再修改回去 , 跟上一种方案在思想上差不多, 不过不用动用原型了




我觉得他是多此一举= =

因为对象池这东西   完全应该靠那些程序员来 自己实现,  还不如告诉他们一个思想来的好



随意了

PS:  效率不知道  我没测试过  呼呼~~~~~~~~~~~~
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics