`
qzriso
  • 浏览: 243016 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

ruby中的单例模式

阅读更多

Singleton 模块实现了单态模式 (Singleton pattern)

 

一、用法 :

class Klass

include Singleton

# ...

end

1 、这确保只有一个 Klass 的实例得到调用。 “这个实例”可以它创建的。

a,b = Klass.instance, Klass.instance a == b # => true a.new # NoMethodError - new 现在是 private …

2 、在实例化时创建“这个实例”,换句话说,第一次是对 Klass.instance() 的调用 , 从而

class OtherKlass

include Singleton

# ...

end

ObjectSpace.each_object(OtherKlass){} # => 0.

3 、这种行为受到继承和克隆的保护。

二、这是通过做标记来完成

1 Klass.new Klass.allocate – 被看成是 private

2 Klass.inherited(sub_klass) Klass.clone() – 用于确保单态模式可被适当地继承和克隆。

3 Klass.instance() – 返回“这个实例”。这个方法体很简单:

def Klass.instance()

return @__instance__

end

4 Klass._load(str) – 调用 Klass.instance()

5 Klass._instantiate?() – 返回“这个实例”或 nil 。这个钩子方法在一个等待循环内放置一个调用 Klass.instance() 的第二 ( 或第 n) 线程。 The return value signifies the successful completion or premature termination of the first, or more generally, current "instantiation thread".

三、 Singlton 的实例方法是:

1 clone dup – 引发 TypeErrors 异常来防止克隆和转储。

2 _dump(depth)— 返回空字符串。 Marshalling strips by default all state information, e.g. instance variables and taint state, from ``the instance’’. Providing custom _load(str) and _dump(depth) hooks allows the (partially) resurrections of a previous state of ``the instance’’.

 

Ruby 的 singleton 很容易!


require 'singleton'

class King
  include Singleton
end

k = King.new      #Error
k = King.instance #Use it to get King instance


分享到:
评论
1 楼 reyesyang 2011-09-22  
正在查找ruby单例模式相关资料,很有帮助,谢谢。

相关推荐

    详解Ruby设计模式编程中对单例模式的运用

    ### 详解Ruby设计模式编程中对单例模式的运用 #### 概述 单例模式是一种常见的设计模式,它的核心思想在于确保一个类只有一个实例,并且这个实例可以通过一个全局访问点进行访问。在Ruby语言中,单例模式的实现...

    Ruby设计模式(中文版+英文版).pdf

    主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、使用适配器填补空隙、使用装饰器改善对象、单例、使用工厂模式挑选正确的类、通过生成...

    中文版 Ruby 设计模式.pdf

    主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、使用适配器填补空隙、使用装饰器改善对象、单例、使用工厂模式挑选正确的类、通过生成...

    Ruby-Ruby中的GoF设计模式实现

    2. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。Ruby中的`Singleton`模块可以轻松实现这一模式,通过`include Singleton`引入模块后,每个类实例只能被创建一次。 3. **抽象工厂模式**:提供一个...

    ruby设计模式的代码有好多

    创建型模式如单例模式(Singleton)、工厂方法(Factory Method)和建造者模式(Builder)等,主要关注对象的创建过程,提供了一种在不指定具体类的情况下创建对象的方法。例如,Ruby中的Singleton模块可以轻松实现...

    design-patterns-ruby:Ruby 中的 GOF 设计模式

    - 即将推出(也解释 Ruby 的单例) 结构模式 解释结构模式的含义 在此处添加模式和示例链接 行为模式 解释行为模式的含义 在此处添加模式和示例链接 关于阅读代码和运行测试 该代码有大量文档,并且具有 100% 的...

    ruby面向对象设计 Practical Object-Oriented Design in Ruby

    常见的设计模式包括工厂模式、单例模式、策略模式、观察者模式等。 在引用的内容中,我们可以看到出版社、作者以及其他相关出版信息。《Ruby面向对象设计》一书由Pearson Education出版社发行,该出版社是全球教育...

    Design Patterns in Ruby Dec 2007.rar

    1. **单例模式**:确保类只有一个实例,并提供一个全局访问点。在Ruby中,可以通过`Singleton`模块轻松实现,或者利用类方法和闭包来创建单例对象。 2. **工厂模式**:提供一个接口用于创建对象,但让子类决定实例...

    gof patterns in ruby

    在Ruby中,单例模式可以通过使用`singleton`模块或者定义私有构造函数并提供静态方法来实现。 ### 结构型模式 #### Adapter(适配器) 适配器模式将一个类的接口转换成客户希望的另一个接口。这种模式使原本由于...

    ruby-design-patterns:Russ Olsen 的 Ruby 设计模式

    1. **单例模式**:在Ruby中,单例类(Singleton)用于确保一个类只能有一个实例。通常,通过模块级别的`singleton_class`方法和`instance`方法来实现。这种模式常用于配置管理或全局状态控制。 2. **工厂方法模式**...

    ruby+voodoo

    Voodoo,通常指的是在软件工程中用于实现特定目的的工具或框架,可能是为了自动化某些过程或者实现某种特殊的编程模式。在这个场景中,“ruby+voodoo”可能是指一个使用Ruby语言实现的名为“Voodoo”的框架或库。 ...

    Ruby-编程基础阅读物主要是Ruby示例

    Ruby中可以实现各种设计模式,如工厂模式、单例模式、装饰器模式、观察者模式等。这些模式可以帮助写出更灵活、可维护的代码。 5. **数据结构**:Ruby内建了丰富的数据结构,如数组(Array)、哈希(Hash)、集合...

    《Ruby从入门到精通》PDF版本下载.txt

    3. **设计模式**:介绍常见的设计模式,如单例模式、工厂模式等,并探讨它们在Ruby中的具体应用。 ### 结语 通过以上内容可以看出,《Ruby从入门到精通》这本书覆盖了从基础知识到高级技术的各个方面,非常适合...

    design-patterns-ruby:Ruby设计模式

    4. **单例模式**(Singleton Pattern):单例模式确保一个类只有一个实例,并提供全局访问点。在Ruby中,可以使用`singleton_class`和`instance`方法,或者`ObjectSpace`来实现单例,但通常推荐使用`Singleton`模块...

    Ruby 面向对象设计实践--2013年

    《Ruby面向对象设计实践》介绍了一些常用的设计模式,如工厂模式、单例模式、策略模式等,帮助开发者更好地组织代码结构,提高代码的可读性和可维护性。 #### 四、实战案例分析 书中通过具体的案例来展示如何运用...

    ruby_quiz.rar

    10. **设计模式**:书中的一些问题可能会涉及到常见的设计模式,如工厂模式、单例模式、装饰器模式等,这些都是软件工程中重要的思想。 通过阅读《Ruby Quiz》,你不仅可以提高Ruby编程技巧,还能了解到一些最佳...

Global site tag (gtag.js) - Google Analytics