`

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

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

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

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


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

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

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

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

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

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

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

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



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



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




我觉得他是多此一举= =

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



随意了

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

相关推荐

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

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

    unity对象池的案例Demo

    Unity对象池是一种优化游戏性能的技术,它通过预先创建并存储一系列可重用的游戏对象,避免了频繁的对象实例化和销毁过程,从而减少了内存碎片和CPU开销。在本案例Demo中,我们将深入探讨Unity对象池的工作原理、...

    Python中的“实例化对象”:从零开始的探索之旅.pdf

    本篇文章介绍了Python中的面向对象编程,重点讲解'实例化对象'这一概念及其应用场景,包括类的基础定义、实例化对象的基本语法规则,并给出了简单的BankAccount类的实例演示,以及在实际项目(银行账户管理、博客...

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

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

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

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

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

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

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

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

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

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

    Java 面向对象 练习题与答案

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

    LabVIEW面向对象编程技术.pdf

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

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

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

    Qt5自定义实例化的QToolTip

    在实际编程中,我们需要在主窗口或者对应的控件类中实例化CustomToolTip,并在需要显示提示的地方调用其show()方法,传入相应的数据,如好友信息。此外,可能还需要处理窗口的关闭事件,确保用户点击关闭按钮或离开...

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

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

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

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

    asp输出json对象实例

    标题"asp输出json对象实例"指的是在ASP中创建和输出一个JSON对象,而不是简单的JSON字符串。通常,我们需要先将ASP中的数据结构(如数组或对象)转化为JSON格式,然后通过HTTP响应输出到客户端。这个过程中可能会...

    建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。

    题目:建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个...

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

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

    springmvc图书管理系统实例源码

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

    CAsyncSocket类的应用实例

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

    Java面向对象程序设计(第二版)

    Java通过包来管理类和接口的范围和可见性。包也用于解决命名冲突的情况,使得不同的类可以使用相同的名称。使用包可以更好地组织和管理大型Java程序。 8. 异常处理 异常处理是Java中处理程序执行过程中出现的错误的...

Global site tag (gtag.js) - Google Analytics