2010年11月15日月曜日

第5章 Singletonパターン : たった1つのインスタンス



第5章はSingletonパターン。このデザインパターンは分かりやすいですね、実際に使う場面もすぐ浮かんできました(DBへのコネクション用オブジェクトとか)。

いつも通り、pythonによる実装を試みたのですが、上手いこといかず苦労しました。"python singleton"でググると色んな解決を見ることが出来ますが、pythonはそもそもprivateなクラスやコンストラクタを作れないので(作る必要がないので)実装が難しいようです。

そんな折、stackoverflowにこんなページが。


ここに『I would still just put methods in a module, and consider the module as the singleton.』と書いてあります。つまりこういうことです。

ソースコード

singleton.py
# -*- coding: utf8 -*-

instance = object()
print u"生成しました"

def getInstance(): return instance

main.py
#!/usr/bin/env python
# -*- coding: utf8 -*-

import singleton

def main():
    print "start."
    obj1 = singleton.getInstance()
    obj2 = singleton.getInstance()
    if obj1 == obj2:
        print u"同じ"
    else:
        print u"違う"
    print "end."

if __name__=='__main__': main()

実行結果
生成しました
start.
同じ
end.

本当にこれでいいのだろうか。分からない 笑

0 件のコメント:

コメントを投稿