- PR -

Singletonって・・・

投稿者投稿内容
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2003-06-22 14:06
引用:

raystarさんの書き込み (2003-06-22 05:13) より:
Singletonの本質は 必ずインスタンスは唯一であるということです。
Singletonパターンを使わずに static のみを使った方法でも
同じ結果を期待することはできますが、
new(インスタンスを作成)出来るということ自体に
そのクラスに対する矛盾が発生します。


staticのみを使い、コンストラクタをprivateにすれば、そのクラスのインスタンスを作成することを禁止できます。

確かにstaticメソッドのみでのsingletonの実装は可能ですし、パフォーマンス的にも多少良いと思われますが、オブジェクトを使用した方がベターではないでしょうか。

第一に、せっかくのオブジェクト指向言語なので、できるだけオブジェクト指向を使うべき。
第二に、wataさんの言われるようにSingletoにするクラスの継承化ができること。
第三に、Factory Methodを合わせて使うことにより、様々なオブジェクトのSingletonの実装が可能なこと
第四に、ObjectWriter や ObjectReaderを使ってオブジェクトのセーブ・ロードができること
などなどがあげられます。

二〜四の理由は、実装したコードに柔軟性を持たせるためです。現時点で必要がないと思われる時でも後々で突然の仕様変更にも問題なく対応できるので、非常に大切だと私は思います。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-06-23 09:18
引用:

raystarさん、回答ありがとうございます。
Connectionの取り方でちょっと疑問点があるのですが、
私の前の開発ではDBのUtilクラスのようなものをつくり
全てstaticメソッドにして取得していたのですが、
当然インスタンスは生成しないので、Connectionの数も意識していないし
また制御することもできないのですが、
この場合はConnectionの数はDB側のシステムファイル
(PostgreSQLではPostgresql.conf)等で制御していたと思います。

SingletonでConnecitonPoolを管理する実装に限って言えば
システムファイルで制御するかjavaのコード上で制御するかの
違いですか?
(すいません、分かりやすい例えをして頂いたのに・・・ちょっと疑問に思ったもので・・・)

回答頂ければ幸いです。




dbconf.properties のようなプロパティファイルを持たせると
よいのではないでしょうか。

スキルアップ/キャリアアップ(JOB@IT)