我正在創建一個視頻遊戲。它包含字符&項目。因爲我想要人物&項目每個都有一個名稱,我應該使用名稱字段創建另一個名爲NamedObjects的類並且具有字符&項目擴展了那個?或者那是過度的?紅寶石抽象類設計
Q
紅寶石抽象類設計
2
A
回答
3
對於作爲name屬性這樣簡單的事情,它可能不值得寫模塊化的代碼,因爲你可能需要的唯一路線是:
attr_accessor :name
當然,如果你預見到命名的東西會在未來共享更多的功能,您的關注是相當有效的。而不是使用繼承,最好在Ruby中使用的模塊:
module Nameable
attr_accessor :name
# To be expanded.
end
class Item
include Nameable
end
class Character
include Nameable
end
2
如果他們分享的所有東西都是名字,那可能是矯枉過正。
2
當它們具有相同的行爲而不是相同的數據時,類應該通常共享基類。面向對象應該總是關於行爲。創建基類時,您還應該考慮/研究Liskov substitution principle。
+0
如何屬性訪問器的概念(即將可能被用於實施在這種情況下'name')適合這種行爲/數據規則?順便說一句,你能澄清Liskov原理與這裏的問題的關係,我沒有看到任何? – 2010-04-07 07:28:38
0
你會不會需要遍歷一堆NamedObjects並顯示名稱?如果是這樣,你需要NamedObjects類。如果你不這樣做,你不會...
無論如何,你不能在這樣一個小問題上發生災難性的錯誤:如果你不爲該名稱做一個基類,並且以後需要它稍後會重新組織你的班級,沒什麼大不了的。如果添加基類並不需要它,這不是一個大問題,它可以安全地被忽略。
1
在java中,我會創建NamedObject接口,如你所說。但是Ruby是一種動態的鴨式語言。沒有接口。所以只需定義一個名稱屬性並在需要的地方使用它。
相關問題
- 1. 設計紅寶石
- 2. 紅寶石Rails4和設計
- 3. 紅寶石設計問題
- 4. 如何設計紅寶石
- 5. 紅寶石抽象模型語句
- 6. 紅寶石程序和數據抽象
- 7. 計算紅寶石
- 8. 紅寶石設置
- 9. 紅寶石「基」類
- 10. 紅寶石計數對象屬性
- 11. 設計紅寶石激光認證
- 12. 紅寶石組成/設計窘境
- 13. 紅寶石界面式設計圖案
- 14. 紅寶石/青瓜成分設計
- 15. 無法在軌道上使用紅寶石Sign_out設計寶石
- 16. 生成模型後紅寶石寶石設計錯誤
- 17. 紅寶石類的計數初始化
- 18. Plivo紅寶石寶石類衝突
- 19. 處置紅寶石類對象
- 20. 紅寶石:迭代計算
- 21. 紅寶石計算哈希
- 22. 紅寶石複雜計數
- 23. 紅寶石日期計算
- 24. 紅寶石計算方法
- 25. 分詞紅寶石計數
- 26. 紅寶石比較對象
- 27. 從對象紅寶石
- 28. 紅寶石和零對象
- 29. 紅寶石顯示對象
- 30. 紅寶石修改對象
阿門那。當你有類'A','B'和'C'時,使用mixin也可以防止很常見的情況:假設'A'和'B'具有共同的功能'F'','A'和'C'功能'F'''。隨着類繼承,你幾乎陷入了困境。 – 2010-04-07 07:33:11
@MladenJablanović:繼承Eiffel能夠很好地處理這種情況,但我同意mixin通常是更好的解決方案。 – Arkku 2010-04-07 08:16:54
+1。你可以用模塊中的幾個方法來擴展這個答案。 (我想不起自己的ATM ......) – 2010-10-29 19:26:17