我已經編寫了運行許多不同模擬的代碼,每個模擬都在它自己的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