モノトーンモード


하나의 객체가 모든 것을 관리하고 있음....

📌 Singleton


クラスにインスタンスが1つしかないことを保証し、そのインスタンスにグローバル・アクセス・ポイントを提供するモード.

に質問


「すべてのカテゴリに1つの責任を負わなければならない」という単一の責任原則に違反した場合、2つの問題が発生します.

  • クラスにインスタンスが1つしかないことを確認する必要があります
  • インスタンスの数を制御することで、共有データの管理が容易になり、ジェネレータが呼び出されるたびに新しいオブジェクトが作成されず、リソース管理が簡素化されます.

  • このインスタンスのグローバルアクセス制御が必要です
  • グローバル変数には重要なデータが含まれる場合があり、グローバルにアクセス可能である場合、他のコードによって変更される場合があるため、アクセス制御
  • が必要である.
    シングルトーンモードでは、この2つの問題を解決できます.

    上図のようにオブジェクトとして管理します.
    ドアを開けると別の物が入っていたので「すみません、誰もいないと思っていました」しかし、右図から見ると、ドアを開けたオブジェクトはどのドアを開けても同じオブジェクトに遭遇し、申し訳なくてドアを閉めます.
    ユーザは使用するたびに異なるオブジェクトと勘違いしているが,実際には常に同じオブジェクトを使用している.

    解決策

  • 基本ジェネレータをプライベートに設定し、他のオブジェクトが新しい単色クラスタリング演算子を使用しないようにします.
  • インスタンスは1つのみでなければならないため、
  • は他のオブジェクトがクラスをインスタンス化することを防止することを目的としています.
  • の作成者としての静的メソッドの作成
  • 静的メソッドは、プライベートジェネレータを呼び出してオブジェクトを作成し、静的フィールドに保存し、このメソッドの次の呼び出しは、すべてのキャッシュされたオブジェクト
  • を返す.
  • 外部構造関数の静的メソッドを呼び出すことによってオブジェクト
  • にアクセスする.

    必要な場合

  • グローバルアクセス可能オブジェクトが1つのみ必要な場合
  • よりも厳密なオブジェクトが必要な場合、
  • メリット

  • はどこでも利用可能
  • 他のパターンとの混合が容易な
  • 欠点

  • コードが乱雑になり、構造解析が困難になるため、
  • の再構築が困難になる.

    こうぞう



    ジェネレータ構造は、単色クラスとジェネレータから構成されます.
  • クラス:静的メソッド宣言
  • 、getInstance自体のクラスの同じインスタンスを返します.
  • 作成者:クライアントコードに非表示にする必要があります.メソッドを呼び出すgetInstanceは、モノトーンオブジェクトをインポートする唯一のメソッド
  • である必要があります.

    📑 References


    https://refactoring.guru/design-patterns/singleton
    https://twinparadox.tistory.com/616
    https://velog.io/@dolarge/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-Singleton-Pattern
    https://readystory.tistory.com/116?category=822867