見出し画像

【Java】プライベートなコンストラクタの使いどころ3パターン

こんにちは!ワーパパエトウです!

今回はプライベートなコンストラクタの使いどころ3パターンをご紹介いたします。あえてコンストラクタをプライベートにするのがどんなときか参考にしていただければと思います。

■定数クラス

public class ConstClass {

	private ConstClass() {}

	public static final String OIMO = "お芋";
	public static final String POTETO = "ポテト";
	public static final String TOMATO = "トマト";
}

まずは定数クラスです。こちらクラス変数で定義されているためnewする必要がありませんね。
インスタンス変数とクラス変数の違いについては下記のまとめを参考にしてください。

■ユーティリティクラス

public class UtilClass {

	private UtilClass() {}

	public static long taxValue(long value) {
		return Math.round(value * 1.1);
	}
}

続いてユーティリティクラスです。
こちらstaticメソッドで定義されているため、newする必要がありませんね。
もしstaticで定義されていないメソッドがあるとしたら、それは本当にstaticで無くてよいのか?ユーティリティクラスに実装すべきものか?について検討が必要です。

■シングルトンクラス

public final class DensetuNoOimo {

	private static final class SingletonHolder {
		private static final DensetuNoOimo INSTANCE = new DensetuNoOimo();
	}

	private DensetuNoOimo() {}

	public static DensetuNoOimo getNewInstance() {
		return SingletonHolder.INSTANCE;
	}
}

最後にシングルトンクラスです。
オブジェクトを一つだけ生成して持ち回りたい場合に使用するパターンです。いくつか書き方がありますが、上記のコードはオブジェクトを初めて使用するまで生成しないようにする書き方です。(遅延生成)

■まとめ

どうでしたか?ひとまず上記の3パターンが有名どころだと思います。
絶対にこうするべきとかではないですが、newしたくない場合にプライベートにするというのが基本的な考え方になりますので覚えておきましょう。

ではまた(^_^)ノシ


記事を書く合間のコーヒー代、待ってます!(*´ー`*)