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设计模式编程中对单例模式的运用 #### 概述 单例模式是一种常见的设计模式,它的核心思想在于确保一个类只有一个实例,并且这个实例可以通过一个全局访问点进行访问。在Ruby语言中,单例模式的实现...
主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、使用适配器填补空隙、使用装饰器改善对象、单例、使用工厂模式挑选正确的类、通过生成...
主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、使用适配器填补空隙、使用装饰器改善对象、单例、使用工厂模式挑选正确的类、通过生成...
2. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。Ruby中的`Singleton`模块可以轻松实现这一模式,通过`include Singleton`引入模块后,每个类实例只能被创建一次。 3. **抽象工厂模式**:提供一个...
创建型模式如单例模式(Singleton)、工厂方法(Factory Method)和建造者模式(Builder)等,主要关注对象的创建过程,提供了一种在不指定具体类的情况下创建对象的方法。例如,Ruby中的Singleton模块可以轻松实现...
- 即将推出(也解释 Ruby 的单例) 结构模式 解释结构模式的含义 在此处添加模式和示例链接 行为模式 解释行为模式的含义 在此处添加模式和示例链接 关于阅读代码和运行测试 该代码有大量文档,并且具有 100% 的...
常见的设计模式包括工厂模式、单例模式、策略模式、观察者模式等。 在引用的内容中,我们可以看到出版社、作者以及其他相关出版信息。《Ruby面向对象设计》一书由Pearson Education出版社发行,该出版社是全球教育...
1. **单例模式**:确保类只有一个实例,并提供一个全局访问点。在Ruby中,可以通过`Singleton`模块轻松实现,或者利用类方法和闭包来创建单例对象。 2. **工厂模式**:提供一个接口用于创建对象,但让子类决定实例...
在Ruby中,单例模式可以通过使用`singleton`模块或者定义私有构造函数并提供静态方法来实现。 ### 结构型模式 #### Adapter(适配器) 适配器模式将一个类的接口转换成客户希望的另一个接口。这种模式使原本由于...
1. **单例模式**:在Ruby中,单例类(Singleton)用于确保一个类只能有一个实例。通常,通过模块级别的`singleton_class`方法和`instance`方法来实现。这种模式常用于配置管理或全局状态控制。 2. **工厂方法模式**...
Voodoo,通常指的是在软件工程中用于实现特定目的的工具或框架,可能是为了自动化某些过程或者实现某种特殊的编程模式。在这个场景中,“ruby+voodoo”可能是指一个使用Ruby语言实现的名为“Voodoo”的框架或库。 ...
Ruby中可以实现各种设计模式,如工厂模式、单例模式、装饰器模式、观察者模式等。这些模式可以帮助写出更灵活、可维护的代码。 5. **数据结构**:Ruby内建了丰富的数据结构,如数组(Array)、哈希(Hash)、集合...
3. **设计模式**:介绍常见的设计模式,如单例模式、工厂模式等,并探讨它们在Ruby中的具体应用。 ### 结语 通过以上内容可以看出,《Ruby从入门到精通》这本书覆盖了从基础知识到高级技术的各个方面,非常适合...
4. **单例模式**(Singleton Pattern):单例模式确保一个类只有一个实例,并提供全局访问点。在Ruby中,可以使用`singleton_class`和`instance`方法,或者`ObjectSpace`来实现单例,但通常推荐使用`Singleton`模块...
《Ruby面向对象设计实践》介绍了一些常用的设计模式,如工厂模式、单例模式、策略模式等,帮助开发者更好地组织代码结构,提高代码的可读性和可维护性。 #### 四、实战案例分析 书中通过具体的案例来展示如何运用...
10. **设计模式**:书中的一些问题可能会涉及到常见的设计模式,如工厂模式、单例模式、装饰器模式等,这些都是软件工程中重要的思想。 通过阅读《Ruby Quiz》,你不仅可以提高Ruby编程技巧,还能了解到一些最佳...