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