`
qzriso
  • 浏览: 236384 次
  • 性别: 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设计模式(中文版+英文版).pdf

    第二部分ruby中的模式  第3章使用模板方法变换算法  第4章使用策略替换算法  第5章通过观察器保持协调  第6章使用组合模式将各部分组成整体  第7章通过迭代器遍历集合  第8章使用命令模式完成任务

    中文版 Ruby 设计模式.pdf

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

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

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

    Ruby使用设计模式中的代理模式与装饰模式的代码实例共3页

    Ruby使用设计模式中的代理模式与装饰模式的代码实例共3页.pdf.zip

    Ruby设计模式

    春节巨献,绝对超值!!!!!

    RUBY设计模式.pdf 中文版

    ruby设计模式是2009年出版的,目前已经断货。网上多是影印版,跟正版售价差不多,买一本影印的,的确划不来。也很少有电子中文版的,发个资源,提供点方便给大家。

    ruby中文资源大全

    在工作中,他希望有一种比 Perl 强大,比 Python 更面向对象的语言。从1993年2月,他开始设计一个全新的自己的语言,1994年12月发布了第一个 alpha版本,并且将这种新语言定名为Ruby(红宝石)。 本教程内含多部中文...

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

    Ruby中的GoF设计模式实现

    Ruby中文文档.zip

    Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp ...

    ruby中文教程,从基础到深入的让你学习ruby

    ruby中文教程,从基础到深入的让你学习ruby

    Ruby中文帮助文档

    Ruby中文文档.CHM 方便ruby or rails学习.

    Ruby中文教程及相关源代码

    Ruby中文教程及相关源代码 Ruby中文教程及相关源代码 Ruby中文教程及相关源代码

    Ruby中使用设计模式中的简单工厂模式和工厂方法模式

    之前有看过《ruby设计模式》,不过渐渐的都忘记了。现在买了一个大话设计模式,看起来不是那么枯燥,顺便将代码用ruby实现了一下。 简单工厂模式: # -*- encoding: utf-8 -*- #运算类 class Operation attr_...

    ruby中英文api

    ruby中英文api 适合于初学者。 希望能给大家带来一些帮助

    ruby 中文文档 必备资料

    ruby 中文文档 必备资料 一定要下哦

    Ruby-HttpClient在Ruby中提供类似libwwwperlLWP的功能

    Http Client - 在Ruby中提供类似libwww-perl(LWP)的功能

    Ruby中文文档

    Ruby是一种功能强大的面向对象的脚本语言,她可以使您方便快捷地进行面向对象编程.Ruby使文本处理和系统管理变得简单,与Perl非常相似.一句话:简单明了,扩展性强,移植性好. Ruby的几大亮点: 语法简单 垃圾回收 ...

Global site tag (gtag.js) - Google Analytics