單機構造(シングルトンパターン)とでも呼ばう。一生獨身といつた方が分りやすいかもしれん。ともかくも、一度しか生成されないオブジェクトインスタンスであり、よくある例だと眞僞値オブジェクトやヌルオブジェクトの類ひはこれを使用することが多い。何度も生成する必要がないからだ。
言語系によつてはオリヂナルなファクトリメソッドでやる必要もあるけど、ここは new が上書きできる Ruby の例をあげやう。
class Singleton # Ruby ではクラスメソッドを特異メソッドと呼ぶ(寧ろ抱括するといつた方が宜しい)。 # 色々應用が效く訣だけど、ここはこれで意圖した通りに動くので許容しようではないか。 # 仔細知りたくば Ruby を繙いて呉れたまへ def self.new return CreateSingleton if(defined? CreateSingleton) return self.new end end CreateSingleton = Singleton.new
Ruby はクラス(及びインスタンス)メソッド内部で定數を定義できない。そこで定數で單機構造な生成をするならば、外で呼び出しておく必要がある。CreateSingleton があるか無いかでインスタンス生成濟かを判斷する訣。
グローバル變數にぶち込んでおくのも例だと思ふし、これから派生した遣り方としてはファクトリメソッドに渡された値が同じであるとファクトリメソッドが判斷すれば生成濟のインスタンスを返す藝當なども有效だらう。