我有一个大数量的,由名称(字符串)来识别对象。所以,我想有一种从对象名称映射到类实例。

有人告诉我,在这种情况下,我可以用一个“仓库”类,它的工作原理类似:

Server myServer = ServerRepository.getServer("NameOfServer");

所以,如果已经有一个对象(服务器)与“NameOfServer”,它将由“getServer”返回。如果这样的对象不存在,它将被创建并且由“getServer”。

返回

所以,我的问题是如何编程这样的“仓库”类?在这一类我必须能够检查是否有一个给定类,使得它具有某一领域的给定值的一个实例。我该怎么做?我需要有一种循环的在给定类的所有现有对象?

我的问题的另一部分是为什么不能使用关联阵列(关联容器,地图,映射,字典,有限地图)? (我不知道你怎么称呼它在Java中)更详细地说,我有一个“阵列”,它映射对象的名字对象。所以,每当创建一个新对象,我将新元素添加到阵列。myArray["NameOfServer"] = new Server("NameOfServer")

有帮助吗?

解决方案

我将与关联容器自己实现它,但它是更好地隐藏一个合适的接口背后的实现细节。这使得它更容易使用,为客户,更容易为你改变/微调随着时间的推移实现。

例如,你可能开始了一个简单的HashMap并找出后,由于某种原因,一个TreeMap会更好。或者你意识到,随着时间的推移,很多未使用的对象在地图上,这是不以任何人引用了,但不能被垃圾收集,因为地图上保持一个参考给他们积累。所以,你可以决定切换到WeakHashMap。如果您的实现隐藏在接口后面,你可以做这些改变不会影响客户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top