LoginSignup
64
43

More than 5 years have passed since last update.

シングルトンパターンの意義

Posted at

このようなQ&Aを見かけました。
Java - シングルトンがなぜ必要なのか(36721)|teratail

7件も回答が付いているものの全体的に「同じクラスのインスタンスが複数作られないように」という点について述べており、そこじゃないんだよ!という結果になっております。
そこじゃないんです。よろしいですか、インスタンスを1個しか作っていけないようなクラスがあるならば、それはそもそもインスタンス化させる必要のないクラス、メソッドをすべてstaticメソッドとして装備したクラスであればよいのです。

シングルトンパターンの意義を説明するには「なぜstaticメソッドとして用意すればいいものをわざわざ遠回りしてシングルトンパターンにするのか」を説明しなければいけないのです。
そこを押さえずにシングルトンパターンの書き方だけ憶えていると、こういうことを言われてしまう。

では、staticメソッドにしない意義は何ですかと。上記の質問のベストアンサーで触れているSystem.outを例にとるなら、なぜSystem.printlnというメソッドが用意されておらず、シングルトンoutを通じてSystem.out.printlnと呼び出さないといけないか。

それは、outPrintStreamインターフェースを実装しているからです。PrintStreamインターフェースを軸に、プログラムを変更することなく出力先を自由に差し替えられる仕組みとして提供されているからです。一般化して、シングルトンパターンを使う理由はこう説明しないといけないのです。

本来staticメソッドとして提供したい機能だがそれではインターフェースを実装できないのでインスタンスメソッドとして提供する。このときに多重インスタンス化を避けるため。

64
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
43