我創建了一個遺傳算法框架,我有一個人口類,其中包括一個Tournament
和一個EvolutionStrategy
對象,這樣我就可以插入不同的錦標賽類型和進化策略。程序接口 - 如何有效地訪問調用類?
目前我已經將它設置,使我由Population
對象傳遞從人口創建一個新的EvolutionStrategy
對象 -
EvolutionStrategy strategy = new BasicStrategy(this);
在BasicStrategy
構造我
Population pop;
public BasicStrategy(Population pop)
{
this.pop = pop;
}
我有一個關於兩個問題這
1)這是否創建適當的引用變量,允許更新popu lation可以在EvolutionStrategy
中即時訪問,還是應該使用某種形式的同步?
2)有沒有更好的方法來做到這一點?對我來說,在Population
中爲戰略提供參考變量以及在Strategy
中爲人口提供參考變量似乎很浪費。
to 1)yes; java除了基本類型外都是通過引用傳遞的。 2)循環引用通常但不總是設計不好的標誌。事實上,在構造函數中傳遞'this'是非常糟糕的做法。但浪費?你在浪費什麼? – 2013-03-09 15:20:52
嗯,我試圖專注於良好的設計,也許我誤解了它。你能否舉一個例子說明如何在不使用循環引用的情況下實現這種模塊化? – SMC 2013-03-09 15:23:32
想想爲什麼'Population'需要了解'EvolutionStrategy',反之亦然 - 他們是否真的需要了解彼此?你能移動這些方法嗎?如果答案是「是」,然後是「否」,那麼考慮一個知道他們兩個的類,並將方法放在那裏。 – 2013-03-09 15:25:54