僕はアダム、シングルトン中毒から回復したんだ
プログラミングで使われるデザインパターンの一つにシングルトンというのがあります。ご存知の方も多いと思いますが覚えるととても便利でなんでもかんでもシングルトンにしたくなってしまう設計です。このシングルトンを使った設計の問題を訴えたAdamさんのブログが話題になっていました。
Adamさんによるとシングルトンのダメな所は下記のとおり。
- 依存関係を見えにくくし、コードが読みづらくなる。
- ユニットテストを難しくする。外部から渡せないオブジェクトはモックにする事が難しい。
- プログラムの再利用性が低下する。一度しか使わないからとシングルトンで作ってしまうと複数のユーザーから利用されるような場合に対応できなくなる。
- スケーラビリティが低下する。
- 良いオブジェクト指向の設計とは言えない。
異論、反論を受付中ということでコメント欄も盛り上がっています。
- 食べると太るから食べ物は悪だ、みたいな話だ。
- Eric Gammaの本を読むといいよ。(GoFの1人)、シングルトンは無くなるはず。
- Spring使いなよ
- 素人な質問だけど、Springって何?
- シングルトンは使う度に後で後悔する
- マルチスレッド環境でのシングルトンは難しいことも忘れちゃまずい
- public staticなフィールドも同じことだな
- 次はDI(Dependency Injection)中毒になるだろうな
- スティーブです。僕もシングルトン中毒で、しかもまだ回復していないよ
この話題、古今東西どこでも盛り上がるみたいですね。あとコメントで出ていた「Design Patterns 15 Years Later: An Interview with Erich Gamma, Richard Helm, and Ralph Johnson」は日本語でも読みたいですね。このリンク先のインタビューにてシングルトンをカタログから除きたいというコメントが出ています。
via:http://adamschepis.com/blog/2011/05/02/im-adam-and-im-a-recovering-singleton-addict/
コメントを残す