首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单例模式、私有方法和单例模块

问单例模式、私有方法和单例模块
EN

Stack Overflow用户
提问于 2011-11-23 08:40:57
回答 1查看 1.1K关注 0票数 1

我正在与Ruby中的单例模式进行斗争。

我知道单例实现了对象的单个实例,但我不太明白我们是否可以在不使用单例模块的情况下复制它。

还有私人方法的问题,现在我必须这样做:

代码语言:javascript
复制
class MyTestClass
  private_class_method :new
  class << self
    def test
      puts hello
    end

    private
    def hello
      'hello world'
    end
  end
end

MyTestClass.test

所以我的问题是:

  1. 是一个很好的单例模式吗?
  2. ,这会确保只有一个实例吗?
  3. 是否有一种方法可以使用单例模块?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-23 10:22:39

1。以上是一个很好的单例模式吗?

可能不会。仅使用类方法无法为单个“实例”执行initialize函数,因此缺少了一些通常在Singleton中可以找到的部分。Ruby具有足够的灵活性,因此您可以根据需要将任何缺失的特性插入到"class“对象中,但是它看起来有点难看。

2.这会确保只有一个实例吗?

是。您正在修改表示类的对象,并且只有一个。

3.是否有一种方法可以让私有方法使用单例模块?

是。你试过吗?正如你所期望的那样。

代码语言:javascript
复制
class Test
  include Singleton
  def public_test
    "foo"
  end
  private
  def private_test
    "bar"
  end
end

Test.instance.public_test  # => "foo"
Test.instance.private_test # => throws exception
Test.instance.send(:private_test) # => "bar"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8239232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档