同事需要实现一个 统一对象池
这个对象池能注册对象,和类
如果是对象则
通过反射获取其中的类定义
的全路径来 实现对类的唯一存储
为了实现类安全 能够保证 任何注册进来的实现poolObject基类的类 只能在这个对象池中通过 get来获取
就必须 想办法实现 一种唯一标识的方式
因此, 我给他的解决方案是 原型对象实现
在注册进来的原型对象上 标记一个字段 类似Object(Class).prototype.abc = "自定义的常量a",
然后再构造函数中判断Object(Class).prototype.abc 是否和设定好的(自定义的常量b)值一样
默认为不一样 这样就会跑错
然后再 pool中每次get前 先修改这个abc为"自定义的常量b" 然后再new出来返回
然后再修改回"自定义的常量a"
这样就实现了他的需求 不过....
还有一种方案:
是在这个对象池的内新建一个internal STATIC的字段,当作锁来使用, 而在平时NEW的时候在父类中比较这个字段, 在取的时候比较这个字段, 先修改这个字段, 在从池中剔除一个 再修改回去 , 跟上一种方案在思想上差不多, 不过不用动用原型了
我觉得他是多此一举= =
因为对象池这东西 完全应该靠那些程序员来 自己实现, 还不如告诉他们一个思想来的好
唉
随意了
PS: 效率不知道 我没测试过 呼呼~~~~~~~~~~~~
这个对象池能注册对象,和类
如果是对象则
通过反射获取其中的类定义
的全路径来 实现对类的唯一存储
为了实现类安全 能够保证 任何注册进来的实现poolObject基类的类 只能在这个对象池中通过 get来获取
就必须 想办法实现 一种唯一标识的方式
因此, 我给他的解决方案是 原型对象实现
在注册进来的原型对象上 标记一个字段 类似Object(Class).prototype.abc = "自定义的常量a",
然后再构造函数中判断Object(Class).prototype.abc 是否和设定好的(自定义的常量b)值一样
默认为不一样 这样就会跑错
然后再 pool中每次get前 先修改这个abc为"自定义的常量b" 然后再new出来返回
然后再修改回"自定义的常量a"
这样就实现了他的需求 不过....
还有一种方案:
是在这个对象池的内新建一个internal STATIC的字段,当作锁来使用, 而在平时NEW的时候在父类中比较这个字段, 在取的时候比较这个字段, 先修改这个字段, 在从池中剔除一个 再修改回去 , 跟上一种方案在思想上差不多, 不过不用动用原型了
我觉得他是多此一举= =
因为对象池这东西 完全应该靠那些程序员来 自己实现, 还不如告诉他们一个思想来的好
唉
随意了
PS: 效率不知道 我没测试过 呼呼~~~~~~~~~~~~