我已经编写了运行许多不同模拟的代码,每个模拟都在它自己的Simulation
对象中。为了提取Simulation
的结果,我们首先必须要求Simulation
创建一个Report
(作为Simulation
的孩子之一)的实例。模拟实例报告的一个实例:使用单例?
即使一个Simulation
可以包含很多情况下Report
,创建过程是相当昂贵的,所以如果有已经在那个特定Simulation
一个Report
,我想重新使用它,而不是创建一个新的。
Report
实例可以从我的代码中的许多不同类访问。我想避免复制代码,首先检查是否已经存在于该特定的Simulation
中,然后基于该代码获取现有的或创建一个新的。
我真的只希望这是Report
每Simulation
的一个实例 - 有点像一个单身......
我看到两个途径:
制定一种“单身”的报告类,允许创建不超过一个
Report
每Simulation
。这可能吗?制作
SpecialSimulation
类,它扩展Simulation
,并在SpecialSimulation
包括含有Report
单身。这是否过分矫枉过正?
Simulation
和Report
是从商业的Java API,我们有许可证的;我无法修改他们的源代码。
尽我所能去学习Java和OOP的绳索......
您可以在'SpecialSimulation'的构造函数中启动'Report',不需要单个元素,然后 – fge 2012-01-13 08:59:11
由于您不能修改模拟和报表,并且因为我们甚至没有他们的API文档,这很难回答。然而,用Java创建对象并不昂贵。我怀疑生成报告的成本不是创建对象,而是用合适的值填充它。每次必须在报告中设置新值时重新使用相同的实例或创建一个新实例不会改变任何内容。 – 2012-01-13 09:36:54