[JAVA]デザインモード-モノトーン


デザイン

  • 設計モードとは、既存の環境で重複する問題をどのように解決するかを意味する.
    これは解決策のようなものです.
  • 設計モードは、設計者が「迅速」に正しい設計を作成するのに役立ちます.
  • 📝 モノトーン

  • JAVAでよく使われるデザインパターン
  • クラスに1回目のメモリのみが割り当てられます.
    オブジェクトの設計モード
  • の作成と使用
  • すなわち、コンストラクション関数が複数回呼び出されても、実際に作成されたオブジェクトは最初に作成されます.
    オブジェクトを返します.
  • SingleTonオブジェクトの利点


  • メモリを有効に使用できます.
    共有機能を作成するだけで、
  • プログラムのグローバル材料に使用できます.
    複数の場所で再利用できます.

  • 異なるクラス間でデータを共有しやすい
  • モノトーンオブジェクトはグローバルに使用されるオブジェクトなので、
    オブジェクトは使用にアクセスできます.
    ❗️ただし複数クラスのオブジェクトから同時にモノトーンオブジェクトのデータにアクセスする
    これにより、同期性の問題が発生する可能性があります.
  • SingleTonの作成

  • 1.静的に自分のオブジェクトを宣言

  • 静的リソースはメモリの固定領域で作成されるため、クラス自体
    オブジェクト、メンバー変数、メソッドと区別できます.
  • // 싱글톤 예시 
    
    public class Calc{
    	static Calc current;
    }
  • 2.外部から直接触れないように隠す。

  • public class Calc{
    	private static Calc current;
    }
  • 3.オブジェクトの割り当てを禁止外部でのオブジェクトの作成を禁止する

  • のデフォルト作成者をプライベート形式として定義すると、オブジェクト作成者は非表示になり、外部から
    new演算子を使用してオブジェクトを割り当てることは禁止されています.
  • public class Calc{
    	private static Calc current;
        
        // 생성자를 private
        private Calc() {}
    }
  • 4.非表示オブジェクトを割り当てたりメモリから削除したりする機能が追加されました

  • 現在のオブジェクトがプライベートオブジェクトとして指定されているため、メモリの中間から接地される
    メソッドの割り当てと削除が必要です.
  • メモリで
  • オブジェクトを制御するにはnullを使用します.
  • public class Calc{
    	private static Calc current;
    		
        private Calc() {}
        
    	// 객체 할당 처리
    	// 객체가 할당되지 않은 경우에만 할당하도록 하여 중복 할당을 방지한다.
    	public static Calc getInstance() {
    		if(current == null) {
    			current = new Calc();
    		}						
    		return current;
    	}
    	
    	// 객체에 null을 대입하면 메모리에서 삭제된다.
    	public static void freeInstance() {
    		current = null;
    	}
    }

    コードの例

    public class Calc {
    	// ------------------------ 싱글톤 객체 생성을 위한 준비 시작 ----------------------
    	private static Calc current;
    	
        private Calc() {}
        
    	public static Calc getInstance() {
    		if(current == null) {
    			current = new Calc();
    		}
    		
    		return current;
    	}
    	
    	public static void freeInstance() {
    		current = null;
    	}
    	// ------------------------ 싱글톤 객체 생성을 위한 준비 끝 ----------------------
    	
    	// 이 클래스가 구현해야 하는 기능
    	public void plus(int x, int y) {
    		int z = x + y;
    		System.out.println(x + " + " + y + " = " + z);
    	}
    	
    	public void minus(int x, int y) {
    		int z = x - y;
    		System.out.println(x + " - " + y + " = " + z);
    	}
    	
    }
    public class Main {
    
    	public static void main(String[] args) {
    		// 별도의 객체에 참조시키는 경우
    		Calc loader1 = Calc.getInstance();
    		loader1.plus(10, 20);
    		
    		// 참조처리를 생략하고 직접 사용하는 경우
    		Calc.getInstance().minus(100, 50);
    		Calc.getInstance().plus(100, 50);
    	}
    
    }
    👉 実行結果
    10 + 20 = 30
    100 - 50 = 50
    100 + 50 = 150

    📙 整理する


  • 単一トーンはgetInstance()メソッドを使用してオブジェクトを受信する形で使用します.

  • 複数のオブジェクトを返しても、1つの静的オブジェクトが同時に参照されます.
    メモリに割り当てられるグローバルオブジェクトは1つだけです.