`

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

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

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

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


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

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

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

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

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

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

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

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



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



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




我觉得他是多此一举= =

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



随意了

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

相关推荐

    通过java类的路径实例化类并调用方法

    通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法

    ActiveMQ连接池完整封装实例工具类

    本文将详细介绍如何实现一个ActiveMQ连接池的完整封装实例工具类,并探讨其背后的设计思想。 首先,我们需要了解JMS(Java Message Service)接口,它是Java平台中用于创建、发送、接收和读取消息的标准API。...

    C#中动态声明与使用对象数组实例

    在C#编程语言中,动态声明与使用对象数组是一种常见的操作...总之,这个实例涵盖了C#中动态数组的基本使用,包括声明、实例化、数据保护和内存管理。通过学习和理解这些概念,开发者能够更有效地处理各种规模的数据集。

    C# 反射,操作权限,动态实例化类

    用反射在动态实例化类的同时设置按钮的权限,这样,实现了操作权限与具体窗体模块的分离,这个问题我以前一直不知道怎么弄,google也查不到,直到最近才解决了,传上来,如果没有人下载,自己做个纪念也好。

    java面向对象编程单实例模式解析

    // 实例化 } } } return instance; } } ``` 这种方式通过双重检查锁定(Double-Checked Locking)保证了线程安全性,同时实现了懒加载,使得在多线程环境下也能正确地创建单例对象。 #### 总结 单实例模式是...

    《Java面向对象编程》实例源代码

    源代码中的示例会展示如何创建和使用类,包括构造函数的使用,以及如何通过实例化类来创建对象。 2. **封装**:封装是面向对象编程的关键特征,它隐藏了对象内部的实现细节,仅通过公共接口与外界交互。这里的实例...

    android 仿京东商品三级分类简单实例

    在Android开发中,构建一个类似京东商品的三级分类系统是一项常见的任务,这涉及到用户界面设计、数据结构管理和触摸事件处理等多个方面。在这个简单的实例中,我们将探讨如何在Android平台上实现这样的功能,不涉及...

    Java 面向对象 练习题与答案

    抽象类是一个不能被实例化的类,通常作为父类使用。抽象类中可以包含抽象方法和普通方法。抽象类的子类必须实现父类的所有抽象方法。 在上面的代码中,抽象类 Shape 中包含了抽象方法 draw(),而 Square 类继承自 ...

    LabVIEW面向对象编程技术.pdf

    该技术基于面向对象编程思想,引入了类和对象的概念,通过类的定义和实例化来实现数据的封装和继承。 在 LabVIEW 中,类是用来表示通用的特性,类的定义包括数据和方法两部分。数据是类的特性,方法是类的行为。...

    unity的 对象池 插件PoolManager 的v6.0.0版本

    分享一款unity的插件 用来建立对象实例化池子管理的工具

    C++类和对象(2013级-C++程序设计)

    信息隐蔽可以理解为封装的一部分,它通过限制对类的成员的直接访问,增强了软件的模块化,有助于降低系统的复杂性,并提高了数据的安全性。封装和信息隐蔽确保了在不对对象整体产生影响的情况下,可以自由修改和替换...

    全局数据管理—使用C++类的静态成员取代全局数据

    在C++中,全局变量通常被用来实现这样的共享数据,但由于它们在整个程序生命周期中都存在,且不受对象实例的限制,因此可能导致难以调试的问题,如数据竞争和资源泄露。为了解决这些问题,C++引入了静态成员的概念,...

    Java面向对象程序设计耿祥义版课件

    耿祥义版的课程可能包括各种实例,如学生管理系统、银行账户操作等,这些实例会演示如何定义类、创建对象、实现继承、接口和多态等。通过PPT,学习者能清晰地看到类结构和逻辑流程;而源码则提供了动手实践的机会,...

    2014年度辛星python面向对象教程

    类的实例化是通过调用类对象来完成的,通常情况下,这个调用过程会调用类中定义的`__init__`方法,这个方法是类的构造器,用于初始化实例状态。 Python中的类和实例都是对象。这意味着它们可以被赋值给变量、可以...

    仿京东菜单分类的实现实例

    接收到JSON数据后,我们需要解析成Objective-C的对象模型,这可以使用`NSJSONSerialization`类,或者第三方库如Mantle、SwiftyJSON等。 在实际开发中,日志记录是非常重要的,尤其是当遇到问题时,`...

    网络安全编程技术与实例.pdf

    - 安全的会话管理:使用安全的方法来生成、存储和验证会话标识符。 - 密码学实践:使用成熟的加密算法保护敏感数据,例如使用HTTPS进行数据传输。 3. 安全编程语言特性: - 使用类型安全的语言:避免语言层面的...

    springmvc图书管理系统实例源码

    同时,通过XML或Java配置,我们可以声明并管理需要的bean,如数据库连接池、数据访问对象(DAO)、服务层对象等,并利用Spring的依赖注入特性,使得这些bean之间能够无缝协作。 5. **数据持久化**:在这个系统中,...

    CAsyncSocket类的应用实例

    在本文中,我们将深入探讨如何使用MFC中的CAsyncSocket类来实现一个简单的聊天室程序。CAsyncSocket类是Microsoft Foundation Class (MFC) 库为Windows Sockets API(Winsock)提供的一种封装,它使得在C++环境中...

    ObjectPoolManager.zip

    6. **线程安全**: 如果多线程环境下使用对象池,还需要考虑线程同步问题,确保对象获取和回收过程的正确性。 **应用场景** 对象池常用于需要频繁创建和销毁的游戏对象,如子弹、敌人、粒子效果等。在Unity中,常见...

Global site tag (gtag.js) - Google Analytics