作者AIGecko (壁虎貓耳控)
看板Ruby
標題[問題] Singleton
時間Tue Sep 25 23:37:36 2012
最近使用Ruby+SDL寫遊戲
不過有一些部分有點疑問
我曾經聽過Singleton
在類別只會建立一個實體時可以使用
(不一定要用 用了可以省去實體化的麻煩)
像是資料庫,設定,主遊戲之類的類別都只有一個實體)
不過在include之後
使用實體方法要中間加上instance
(以上都是沒問題的...)
不過
為了隱藏Singleton的事實
(就是說不用管是不是Singleton)
我想把instance的字消失
於是就會變成
class C
include Singleton
def initialize
@value
end
def func
return @value
end
def self.func
self.instance.func
end
end
於是直接當成類別方法呼叫了
使用
C.func 取代
C.instance.func
不過若是方法很多這樣一一定義會很麻煩
不知道有沒有什麼方法可以大量定義
因為引數和方法名都不會變
其實我也有個解決方法
只是我不確定會不會很奇怪
(以自己角度?以大家角度?)
就是使用類別變數當實體變數用
不需要產生實體
class C
@@value
def self.func
return @@value
end
end
這種寫法我也不知道該怎麼解釋
能解決問題倒是真的
或許只要能解決問題+能讓人看懂就好?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.115.205
推 mars90226:第一種問題在ruby中的解法應該是用method_missing 09/26 00:06
→ mars90226:而類別變數最好不要使用~因為很容易出錯~他的概念不是 09/26 00:07
→ mars90226:完全跟Java的static變數一樣,而是整個繼承體系的變數 09/26 00:07
→ hSATAC:ruby 不是內建 singleton 可用? 09/26 15:09
→ AIGecko:話說那些打算使用Singleton模組的類別都沒有繼承 09/26 16:05
→ AIGecko:不過類別變數的繼承BUG好像修好了 父類子類不會影響 09/26 16:06