teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

例を追記

2020/05/26 02:09

投稿

dodox86
dodox86

スコア9380

answer CHANGED
@@ -1,3 +1,7 @@
1
1
  シングルトン(Singleton)はご存じのようにデザインパターンのひとつで、唯一無二の存在(インスタンス)を実現するための仕組みです。その仕組みを実現する実装の為に`static`を使っているだけで、安易な設計と実装にするためにstaticな関数、変数のみを使っているプログラムとは一線を画しているはずです。ただ、staticな関数、変数のみを使っているプログラムが即、悪いプログラムとは限らず、そのようなプログラムではオブジェクト指向やデザインパターンの適用は過剰スペックになることもあります。
2
2
 
3
- 「staticおじさん」とはいわば蔑称で、「オブジェクト指向でのカプセル化などのメリットを理解せず、周囲にもオブジェクト指向で**"作らない"**ことを強要する」ような人を指すものでもあると思います。そちらの方が恐らく有害で、気を付けるべきものかもしれません。適材適所です。
3
+ 「staticおじさん」とはいわば蔑称で、「オブジェクト指向でのカプセル化などのメリットを理解せず、周囲にもオブジェクト指向で**"作らない"**ことを強要する」ような人を指すものでもあると思います。そちらの方が恐らく有害で、気を付けるべきものかもしれません。適材適所です。
4
+
5
+ ---
6
+ **追記しました:**
7
+ なお、シングルトンの考え方が適用されたクラスでも全てのメソッドがstaticな訳ではありません。各種APIで「クラス名.getInstance()」のようなかたちでインスタンスオブジェクトが取得できるものがありますが、不適切なコンテキストでインスタンス化しないよう配慮されたもので、これらもシングルトンと言えるでしょう。多くの場合でインスタンスメソッドが使えます。