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
分享到:
相关推荐
单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有...
第二部分ruby中的模式 第3章使用模板方法变换算法 第4章使用策略替换算法 第5章通过观察器保持协调 第6章使用组合模式将各部分组成整体 第7章通过迭代器遍历集合 第8章使用命令模式完成任务
主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、使用适配器填补空隙、使用装饰器改善对象、单例、使用工厂模式挑选正确的类、通过生成...
- 即将推出(也解释 Ruby 的单例) 结构模式 解释结构模式的含义 在此处添加模式和示例链接 行为模式 解释行为模式的含义 在此处添加模式和示例链接 关于阅读代码和运行测试 该代码有大量文档,并且具有 100% 的...
Ruby使用设计模式中的代理模式与装饰模式的代码实例共3页.pdf.zip
春节巨献,绝对超值!!!!!
ruby设计模式是2009年出版的,目前已经断货。网上多是影印版,跟正版售价差不多,买一本影印的,的确划不来。也很少有电子中文版的,发个资源,提供点方便给大家。
在工作中,他希望有一种比 Perl 强大,比 Python 更面向对象的语言。从1993年2月,他开始设计一个全新的自己的语言,1994年12月发布了第一个 alpha版本,并且将这种新语言定名为Ruby(红宝石)。 本教程内含多部中文...
Ruby中的GoF设计模式实现
Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp ...
ruby中文教程,从基础到深入的让你学习ruby
Ruby中文文档.CHM 方便ruby or rails学习.
Ruby中文教程及相关源代码 Ruby中文教程及相关源代码 Ruby中文教程及相关源代码
之前有看过《ruby设计模式》,不过渐渐的都忘记了。现在买了一个大话设计模式,看起来不是那么枯燥,顺便将代码用ruby实现了一下。 简单工厂模式: # -*- encoding: utf-8 -*- #运算类 class Operation attr_...
ruby中英文api 适合于初学者。 希望能给大家带来一些帮助
ruby 中文文档 必备资料 一定要下哦
Http Client - 在Ruby中提供类似libwww-perl(LWP)的功能
Ruby是一种功能强大的面向对象的脚本语言,她可以使您方便快捷地进行面向对象编程.Ruby使文本处理和系统管理变得简单,与Perl非常相似.一句话:简单明了,扩展性强,移植性好. Ruby的几大亮点: 语法简单 垃圾回收 ...