2014-09-12 83 views
0



當創建一個將以圖形方式表示的對象,並且具有獨立於該表示的數據和功能時(即,卡片遊戲中的卡片將具有圖形,但也知道其值,適合,也許可以翻轉),從最佳實踐方法,該對象應該知道自己的形象和位置?

如果不是,應該如何處理?我明白,至少應該有另一個班級負責繪製這個對象,並且它呼籲我說班級不需要關心它的圖形:程序應該能夠改變設計和外觀在不影響課堂本身的情況下 - 無論你如何繪製圖像,七個黑桃都是七個黑桃 - 但是我發現很難想出一個解決方案,讓'抽屜'課知道圖像和位置卡。

我現在的解決方案是有一個精靈類,並且卡包含一個精靈對象,它與卡一起構建 - 精靈只包含一個圖像和矢量(位置),但我覺得我可以打破這個。

我錯過了任何設計模式或常識解決方案?或者我只是錯誤地認爲這應該分開?面向對象的圖形和畫家

+0

我想提出的是,這不是一個OOP問題,而是更多的關注點分離問題 - 在遊戲設置中,這取決於你正在與誰交談(也可能受到你使用的引擎的影響) – 2014-09-12 19:41:45

回答

0

由於這是一個意見問題:我認爲最好不要讓對象知道自己的圖像。它應該知道自己的立場。像你提到的那樣,當一張卡被抽出時,七個黑桃是七個黑桃。將它留給不同的處理程序來根據它是什麼類型的卡來繪製圖像,而不是向卡片要求其圖像。

當你畫一張卡時,你可以進行方法調用,例如:drawCardImage(cardObject.type)。然後,該方法可以使用if語句檢查「if card =='sevenofspades':draw(」/ images/sevenspades.png「)