- PR -

ユーティリティクラスをSingletonにしたときのデメリット

投稿者投稿内容
YUKIJP
会議室デビュー日: 2003/08/28
投稿数: 4
投稿日時: 2005-06-24 17:53
各機能から呼び出されるユーティリティクラスをSingletonにて実装したときの
デメリットは何かありますか?

Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-06-24 17:57
スレッドセーフにしないといけない、ぐらいでしょうか。
takashi
ベテラン
会議室デビュー日: 2004/02/12
投稿数: 79
お住まい・勤務地: 東京
投稿日時: 2005-06-24 18:02
私がユーティリティクラスを作るときはメソッドは全てSTATICにして、変数はSTATIC FINALにして、インスタンスを生成せずに使用してます。
こうすればあまり考えずに使用できます。

シングルトンとは関係ないですが、ご参考までに。
YUKIJP
会議室デビュー日: 2003/08/28
投稿数: 4
投稿日時: 2005-06-24 18:18
早速の返信有難うございます。
逆にSingletonにて実装するメリットは何かありますでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-06-24 18:54
逆の逆に、なぜ Singleton にしたいと考えたのでしょうか?
なにかメリットがあると思ったからではないですか?
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2005-06-24 19:02
「一度初期化すると、内部状態が変更されない」場合に、Singleton Pttaernを適用するといいかもしれません。
どのContextから使用しても、状態が変わらないので、インスタンス変数で握っておく必要がなくなります。

Singleton Pttaernのデメリットとして、ユニットテストが行いにくいことです。

Proxy Patterを適用し、staticメソッドからインスタンスなデータのメソッドを呼ぶよう委譲するよう実装し、実際に処理を行うクラスだけをテストするようにすると、いい感じです。

以下のページが参考になります。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?cmd=view&p=StaticSubstitution&key=static

追加:
ちなみに、Proxy Patterを適用すると、Singleton Patternを適用しているにもかかわらず、実行時に実装のすり替えを行うことが出来ます。

[ メッセージ編集済み 編集者: かずくん 編集日時 2005-06-24 19:05 ]
YUKIJP
会議室デビュー日: 2003/08/28
投稿数: 4
投稿日時: 2005-06-24 19:16
引用:

インギさんの書き込み (2005-06-24 18:54) より:
逆の逆に、なぜ Singleton にしたいと考えたのでしょうか?
なにかメリットがあると思ったからではないですか?



Singletonであれば拡張性があるのがメリットかと思いましたが
他の方意見を伺いたいと思いました。
YUKIJP
会議室デビュー日: 2003/08/28
投稿数: 4
投稿日時: 2005-06-24 19:31
いろいろと考えてみた結果、以下のように使い分けようと思いました。
問題となるところはありますか?

・拡張するようなユーティリティクラスはSingleton
・関数の集合のようなユーティリティクラスはstatic methodのクラス

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