作者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
1F:推 mars90226:第一种问题在ruby中的解法应该是用method_missing 09/26 00:06
2F:→ mars90226:而类别变数最好不要使用~因为很容易出错~他的概念不是 09/26 00:07
3F:→ mars90226:完全跟Java的static变数一样,而是整个继承体系的变数 09/26 00:07
4F:→ hSATAC:ruby 不是内建 singleton 可用? 09/26 15:09
5F:→ AIGecko:话说那些打算使用Singleton模组的类别都没有继承 09/26 16:05
6F:→ AIGecko:不过类别变数的继承BUG好像修好了 父类子类不会影响 09/26 16:06