2010-11-17 48 views
0

我正在嘗試做一個簡單的遊戲。我有一個屏幕緩衝區的類,一個圖像類和一個精靈類。我的問題是這樣的:
由於每個精靈都需要「屬於」某個圖像(精靈只保存某個圖像中的座標,並且指向圖像的指針),我應該將圖像類傳遞給精靈構造函數,像這樣:設計模式定義

Sprite spriteInstance(imageInstance, rect, ...); 

或具有由圖像類

Sprite spriteInstance = imageInstance.createSprite(rect, ...); 

抑或是個人喜好的問題的方法返回的精靈。 (都顯然工作,我只是想知道如果一個被認爲是「對」「專業」方式做到這一點。)
圖像/屏幕關係也是如此:如果表面返回屏幕或圖像通過屏幕。

,我還沒有嘗試過實施還有第三種選擇是有一個「遊戲」類,而做到這一點:

Game gameInstance; 
Image imageInstance = gameInstance.loadImage(path); 
Sprite spriteInstance = gameInstance.newSprite(imageInstance, rect, ...); 

如果上面的第二/第三方法建議,應該精靈類構造函數作爲「朋友」與圖像類進行私有化,還是保留爲公共?這種類型的方法有一個名字,我可以查找進一步的洞察力?這是什麼被稱爲「工廠模式」?

感謝

回答

1

好像你有兩個單獨的問題在這裏:在何處放置邏輯用於創建基於圖像上的精靈,以及是否使用一個工廠方法還是不行。

我會建議不要imageInstance.createSprite,除非它真的對圖像有意義,知道存在一些名爲Sprite的類。如果可能,您希望保持可見性爲單向。因此,除非圖像取決於精靈,否則不要讓它知道存在類Sprite

我可能會建議

Sprite s = Sprite.forImage(image, rect); 

我不能多說了不知道更多關於類(和職責)遊戲,影像,和雪碧。

至於工廠的方法,是啊堅果。有效的Java在其優點方面有着不錯的篇章。

+0

目前我沒有遊戲課。也許我應該。我提到這是一個想法,我想到有一個對象負責遊戲的各個方面,包括創建對象 – baruch 2010-11-17 21:42:58

+0

是的,這是正確的。圖像的命名對我來說不太清楚,也許是一些動詞?如果它是Create.Sprite.forImage它會。這裏的Create是你的靜態或單例(又稱工廠),Sprite是屬性對象,forImage是Sprite類的方法 – user44298 2010-11-17 21:49:32