- - PR -
ユーティリティクラスをSingletonにしたときのデメリット
1|2|3|4|5
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-24 17:53
各機能から呼び出されるユーティリティクラスをSingletonにて実装したときの
デメリットは何かありますか? | ||||
|
投稿日時: 2005-06-24 17:57
スレッドセーフにしないといけない、ぐらいでしょうか。
| ||||
|
投稿日時: 2005-06-24 18:02
私がユーティリティクラスを作るときはメソッドは全てSTATICにして、変数はSTATIC FINALにして、インスタンスを生成せずに使用してます。
こうすればあまり考えずに使用できます。 シングルトンとは関係ないですが、ご参考までに。 | ||||
|
投稿日時: 2005-06-24 18:18
早速の返信有難うございます。
逆にSingletonにて実装するメリットは何かありますでしょうか? | ||||
|
投稿日時: 2005-06-24 18:54
逆の逆に、なぜ Singleton にしたいと考えたのでしょうか?
なにかメリットがあると思ったからではないですか? | ||||
|
投稿日時: 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 ] | ||||
|
投稿日時: 2005-06-24 19:16
Singletonであれば拡張性があるのがメリットかと思いましたが 他の方意見を伺いたいと思いました。 | ||||
|
投稿日時: 2005-06-24 19:31
いろいろと考えてみた結果、以下のように使い分けようと思いました。
問題となるところはありますか? ・拡張するようなユーティリティクラスはSingleton ・関数の集合のようなユーティリティクラスはstatic methodのクラス |
1|2|3|4|5
次のページへ»