Eyes, JAPAN Blog > Singletonパターン

Singletonパターン

makuta

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

あるクラスのインスタンスが一つしかないことを保証したい場合があります。注意深くプログラミングをすれば、一つのインスタンスを使いまわすことは可能でしょうが、このインスタンスが唯一であることを保障するものとはなりません。

このような場合に、利用できるパターンが Singleton パターンです。

Singletonパターンとは、あるクラスのインスタンスが、プログラム全体で一つしか生成されない、存在しないことを保証するためのパターンです。なぜ、わざわざそのような制限を課すのか。制限を課すということは、条件を増やすことになります。インスタンスが複数存在すると、インスタンスたちが相互に影響しあって、思いがけないバグを生み出してしまう可能性があります。しかし、インスタンスが1つしかないという保証があれば、その前提条件の下でプログラミングをすることになるので、思いがけないバグを防ぐことができるのです。

Singletonパターンを使う目的は、実装者の誤りを防ぐことではありません。そのクラスを見た人が分かるように、インスタンスを1つしか生成しないことを前提としてクラスが実装されていることを「表現」することにあります。つまり、そのクラスだけに閉じています。この点から、アプリケーションレベルで、インスタンスが1つしかないという仕様があるときに、それをSingletonパターンとして設計するのは、誤りと言えます。

ということで、今回はSingletonパターンの紹介でした。

Comments are closed.