基本的な定義
シングルトンパターンは、特定のクラスのインスタンスが1つだけであることを確認し、グローバルアクセスポイントを提供することです。シングルトンパターンには次の特性があります。
- インスタンスは1つだけです。
- 独自にインスタンス化する必要があります。
- システム全体へのアクセスポイントを単独で提供する必要があります。
コードの実装
空腹
静的変数を直接初期化します。これにより、スレッドの安全性が確保されます。
public class Singleton { private static Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return singleton; } }
怠惰な
オンデマンドでロードし、同期して処理します。つまり、getInstance()メソッドを同期メソッドに変換します。
パブリック クラスLazySingleton { プライベート スタティック 揮発性LazySingleton lazySingleton; プライベートLazySingleton(){ } パブリック 静的LazySingletonのgetInstance(){ 場合(lazySingleton == NULL ){ 同期(LazySingleton。クラス){ lazySingleton = 新しいLazySingleton()。 } } return lazySingleton; } }
アドバンテージ
システムリソースの節約。システムにはインスタンスオブジェクトが1つしかないため、オブジェクトを頻繁に作成および破棄する必要がある一部のシステムでは、シングルトンモードがシステムリソースを確実に節約し、システムパフォーマンスを向上させます。
シングルトンクラスはその唯一のインスタンスをカプセル化するため、顧客がいつどのようにアクセスするかを厳密に制御できます。
短所
シングルトンパターンには抽象化レイヤーがないため、シングルトンクラスを拡張することは非常に困難です。
JDKソースコード
怠惰な
java.lang.Runtim
空腹
java.lang.System