デザインパターン-Singleton
Singletonパターンとは
Singletonパターンとは、インスタンスがひとつであることを保証するデザインパターンです。
「Singleton」は「単独個体」という意味の英語です。
Singletonパターンの利点
Singletonパターンは、複数オブジェクトを作成させないことを保証したい場合に適用します。
オブジェクトを生成すること(new)は非常に負荷のかかる処理です。
使いまわしが効くオブジェクトを毎回生成(new)することは、速度性能上の問題となりますので、初めに生成したオブジェクトを再利用すぺきです。
例えば、システム内で共通のキャッシュテーブルを参照させる場合などに、シングルトンパターンを適用することで高速化または効率化することが可能となります。
構成要素
- Singleton
- 唯一のオブジェクトを返す役です。
- getInstanceメソッドで常に同じオブジェクトを返します。
rubyによるSingletonパターンの実装
#!/usr/bin/env ruby
class SingletonPattern
# newの呼び出しを禁止
private_class_method :new
@@singleObject = nil
# インスタンス作成用メソッド
def self.create
@@singleObject = new if(@@singleObject == nil)
return(@@singleObject)
end
end
obj1 = SingletonPattern.create
obj2 = SingletonPattern.create
puts("Not Singleton") if(obj1 != obj2)
Rubyの機能を利用する。
Rubyは言語としてシングルトンをサポートしています。
シングルトンパターンを実現するには、singletonモジュールをincludeします。
なお、Singletonモジュールをインクルードした場合はcloneメソッドでの複製はできません。
#!/usr/bin/env ruby
require 'singleton'
# シングルトン
class SingletonPattern
include Singleton
attr_accessor :counter
def initialize
@counter = 0
end
end
obj1 = SingletonPattern.instance
obj1.counter += 1
puts(obj1.counter) # 1
obj2 = SingletonPattern.instance
obj2.counter += 1
puts(obj2.counter) # 2
関連ページ
- デザインパターン
- デザインパターン-FactoryMethod
- デザインパターン-Builder
- デザインパターン-Prototype
- デザインパターン-Singleton
- デザインパターン-AbstractFactory