[Ava]モノトーンパターン

5625 ワード

スプリングは基本的に中空をモノトーンオブジェクトにします.
ソース:https://www.javatpoint.com/singleton-design-pattern-in-java

モノトーンモードとは


インスタンスが1つしかないクラスを定義します.
地域全体が近づくようにします.
すなわち、単色クラスが1つのインスタンスしかなく、他のクラスからアクセスできることを保証する必要があります.
モノトーンモードには2つの方法があります.
  • 初期インストール:ロード時にインスタンス
  • を作成する
  • Lazy Instantation:必要に応じてインスタンス
  • を作成

    モノトーンモードの利点


    インスタンスは毎回作成されないため、メモリを節約できます.
    同じインスタンスが再利用され続けます.

    いつ書きますか。


    シングルトーンモードは、マルチスレッドおよびデータベースを使用するアプリケーションでほとんど使用されます.記録、キャッシュ、書き込みプール、設定などに使用します.

    モノトーンレベルを作成してみます。


    単色クラスを作成するには、次の内容が必要です.
  • 体力メンバー:静的なのでメモリに1回しか格納されません.1トンクラスのインスタンスを格納します.
  • privateジェネレータ:他のクラスが単色クラスのインスタンスを生成することを禁止します.
  • static factoryメソッド:単一のトーンオブジェクトへのグローバルアクセスを許可し、インスタンスを呼び出し元に返します.
  • 初期のInstantationについて


    STATICメンバーを宣言しながらインスタンスを作成します.
    したがって、クラスがロードされるとインスタンスが生成されます.
    class A{  
     private static A obj=new A();//자기 자신의 인스턴스를 생성한다. 클래스가 로딩될때 생성된다.
     
     //기본생성자를 private 으로 선언함으로써 다른 클래스가 이 클래스의 인스턴스를 생성하지 못하게 한다.
     private A(){}  
     
     //static 팩토리 메서드를 통해 인스턴스를 반환한다.
     public static A getA(){  
      return obj;  
     }  
      
     public void doSomething(){  
     //write your code  
     }  
    }  
    

    Lazy Instantiationについて


    synchronizedメソッドまたはsynchronizedブロックを使用してインスタンスを作成します.必要に応じてインスタンスを作成します.
    class A{  
     private static A obj;  
     private A(){}  
       
     public static A getA(){  
       if (obj == null){  
          synchronized(Singleton.class){  
               if (obj == null){  
                	obj = new Singleton();//필요할때 인스턴스가 생성된다.
               }  
        	}              
        }  
      return obj;  
     }  
      
     public void doSomething(){  
     //write your code  
     }  
    }