2008-01-21

ruby singleton解析

关键字: singleton
搜索了一下,发现JE上还没有关于Ruby singleton的帖子,自己来写个
引用《Programming Ruby》书中的一例

引用
class Mylogger
private_class_method :new 
@@logger=nil
def Mylogger.create
@@logger = new unless @@logger 
@@logger
end
end


观察这段代码,@@logger对象是在方法调用后被创建,所以这个是典型的单例“懒汉”模式。

某些代码注解:
private_class_method :new
#private_class_method是Module的一个方法,用于将一个已经存在的类方法定义成私有。这里是将new方法定义成私有。

方法
def Mylogger.create
@@logger = new unless @@logger 
@@logger
end


此方法判断@@logger对象实例是否存在,不存在则调用new创建之,存在则直接返回。。

我也“懒汉”,写“懒汉”单例,先写这么多罢
评论
simohayha 2008-01-21
直接include Singleton 不就行了..
发表评论

您还没有登录,请登录后发表评论

shaka
搜索本博客
存档
最新评论