第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 件のコメント:
コメントを投稿