シングルトン パターンは創造的なデザイン パターンです。その主な機能は次のとおりです:
インスタンスが 1 つだけ: シングルトン パターンにより、インスタンスが 1 つだけ存在することが保証されます。インスタンス オブジェクトはシステム内に存在し、オブジェクトへのすべてのアクセスは同じオブジェクトへの参照です
グローバル アクセス: シングルトン モードではインスタンス オブジェクトにグローバルにアクセスできるため、競合と競合
遅延初期化: シングルトン モードでは通常、遅延初期化テクノロジが使用され、必要な場合にのみシングルトン オブジェクトが作成されるため、不必要なリソースの無駄やパフォーマンスの損失が回避されます。シングルトン オブジェクトの正確性と信頼性を確保します
スレッド セーフティ: シングルトン モードでは、マルチスレッドで取得されるインスタンス オブジェクトが同じであることを確認し、マルチスレッドを回避するために、スレッド セーフティの問題を考慮する必要があります。
package com.fanqiechaodan.singleton.singleton1; /** * @Classname Singleton * @Description */ public class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton(){ // 私有构造函数 } public static Singleton getInstance(){ return INSTANCE; } }
package com.fanqiechaodan.singleton.singleton2; /** * @Classname Singleton * @Description */ public class Singleton { private static volatile Singleton instance; private Singleton() { // 私有构造函数 } public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
package com.fanqiechaodan.singleton.singleton3; /** * @Classname Singleton * @Description */ public class Singleton { private Singleton(){ // 私有构造函数 } public static Singleton getInstance(){ return SingletonHolder.INSTANCE; } private static class SingletonHolder{ private static final Singleton INSTANCE = new Singleton(); } }
package com.fanqiechaodan.singleton.singleton4; /** * @Classname Singleton * @Description */ public class Singleton { private Singleton() { // 私有构造函数 } static enum SingletonEnum { /** * 枚举实例 */ INSTANCE; private Singleton singleton; /** * 私有构造函数,确保只有一个实例 */ private SingletonEnum() { singleton = new Singleton(); } private Singleton getSingleton() { return singleton; } } /** * 对外暴露一个获取Singleton对象的静态方法 * * @return */ public static Singleton getInstance() { return SingletonEnum.INSTANCE.getSingleton(); } }
以上がJava創作デザインパターンのシングルトンパターンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。