2015-11-09 129 views
0

我希望這是一個正確的堆棧。面向對象編程 - 子對象與全局變量(用例)

我正在開發一個類似nethack的遊戲,我想諮詢一下如何接近設計部分。現在我得到了像位置,Npc,項目等類但我已經有一個問題,如何輕鬆訪問部分位置。

可以說我有一個對象門裏面(沒有繼承)。如果玩家在位置內,則很容易檢查門是否打開。但另一方面(我用我以前的非對象實現得到了這個解決方案)我在0600年開了一個腳本,打開所有商店。但是現在我需要遍歷所有內容,檢查裏面是否有門,如果位置是商店,請打開它們。它真的是優化的方式嗎?

我也可以做一個全局變量(像singelton)與門狀態,並快速通過這些 - 但它不會是一個OOP。

這裏有什麼可能?

如果這個問題被覆蓋的地方,請與我分享鏈接,這將肯定是不夠:)

謝謝!

Zaqqen

回答

0

在我看來,理論和實際OOP是有區別的。如果你想了解OOP的基礎或做論文,理論上可以很好。在其他大多數情況下,你會喜歡實用的。

爲什麼和它與您的問題有什麼關係?

當我還是一個年輕的開發者時,我非常痛苦地合理化我的代碼。我是否需要在類ProductStoreConsumer的類別中編碼銷售方法?

然後我發現SOA,我在SaleHandler這個類中設置了我的銷售方法。

這就是你所說的單身人士。我更願意將它作爲一個服務來實現,並幫助我製作一些動態的dependency injection。從這裏,我有我的數據類(Product,Store,...)和我的服務類(SaleHandler)是快速的。我所有的邏輯都被編碼在這些服務中。這不是純粹的理論OOP,但它幫助我處理越來越複雜的不斷增長的應用程序。

我不知道你怎麼能在你的情況下,利用這一點,但我可以給你一些坡度:包含所有的門(模式註冊表)

  • 服務類DoorsRegistry
  • 服務類DoorOpener處理開門。

如果你不使用任何框架,幫助你做,你可以實現你的服務爲單身,但要知道,pattern singleton is certainly an anti-pattern

希望這是你正在等待的那種答案。