モノトーンモード



モノトーンパターンとは?


モノトーンモードの定義は簡単です.オブジェクトインスタンスが1つしか作成されないモードを示します.
  • アプリケーションが起動すると、クラスには最初にメモリが1回しか割り当てられず、そのメモリにインスタンスが作成されて使用されます.
  • すなわち、
  • インスタンスが必要な場合、同じインスタンスは作成されず、既存のインスタンスが利用される.
  • ジェネレータが複数回呼び出されても、実際のオブジェクトは1つであり、最初に作成されたオブジェクトを返し続けます.java에서는 생성자를 private으로 선언해 다른 곳에서 생성하지 못하도록 만들고, getInstance() 메소드를 통해 받아서 사용하도록 구현한다
  • は、複数の汎用オブジェクトを作成する必要がある場合に使用される.
  • シングルループモード


    グローバル変数を使用せずにオブジェクトを作成し、作成したオブジェクトを任意の場所で参照できるモードです.
  • 「アレイの作成」の1つ
  • ロール実行アクション

  • Singleton
    1つのインスタンスのみを作成し、getInstanceメソッドですべてのクライアントに同じインスタンスを返します.
  • 長所

  • オブジェクトを1回作成して返すだけで、メモリ領域を1回割り当てるだけです.>メモリの無駄を防ぐことができます.
  • モノトーンのインスタンスは「グローバル」であるため、他のクラスのインスタンスはデータを共有することができる.
  • インスタンスに絶対インスタンスが1つしか存在しないことを確認し、開発ミスを低減
  • モノトーンオブジェクトを使用しない場合は、インスタンスは作成されません.
  • トンを継承できます.
  • まず考えられるメリットはメモリです.最初のnew演算子で固定されたメモリ領域を使用することで、将来そのオブジェクトにアクセスする際のメモリの浪費を防止できます.それだけでなく、生成されたインスタンスを利用すると、速度の面でもメリットがあります.
    もう1つの利点は、異なるクラス間でデータを簡単に共有することです.モノトーンインスタンスはグローバルで使用されるインスタンスであるため、他のクラスのインスタンスからアクセスできます.ただし、複数のクラスのインスタンスのモノトーンインスタンスのデータに同時にアクセスすると、同期の問題が発生する可能性があるため、この点を考慮したほうがよい.
    それ以外にも、ドメインの観点からインスタンスが1つしかないことを保証するには、モノトーンモードを使用することもできます.

    短所

  • のグローバル変数より使いにくい
  • モノトーンインスタンス1人で多くの作業や共有を行うと、他のクラスとの結合度が向上します.>メンテナンスが困難で、テストがスムーズではありません.
  • マルチスレッド環境で同期処理を行わない場合、2つのインスタンスが生成されます.
  • オブジェクトの破壊点を制御するのは難しいかもしれません.
  • によると、モノトーンが必要な場合でなければ避けたほうがいいという.(上手に使えば大丈夫!)
  • まず,モノトーンモードを実現するコード自体が多く必要である.前述した実装方法に加えて、静的ファクトリメソッドでオブジェクトの作成を確認してジェネレータを呼び出す場合は、synchronizedキーワードを使用して、マルチスレッド環境で発生する可能性のある同期の問題を解決する必要があります.
    2つ目はテストが難しいことです.1トンのインスタンスはリソースを共有するため、決定的な隔離環境でテストを実行するには、各インスタンスの状態を初期化する必要があります.アプリケーション全体でステータスが共有されているため、テストは完全に実行できません.
    第三に、依存関係のため、クライアントは特定のクラスに依存します.newキーワードを直接使用してクラスにオブジェクトを作成するため、SOLID原則のDIPに違反したり、OCP原則に違反したりする可能性があります.
    このほか、サブクラスを作成できない、内部状態の変更が難しいなどの問題もあります.従って、これらの問題を伴うモノトーンモードは、柔軟性の悪いモードといえる.

    モノトーンモード

    var obj = {
        myprop : "my value"
    }
    var obj2 = {
        myprop : "my value"
    }
    
    obj === obj2  // false
    obj == obj2   // false
  • 特定のクラスのオブジェクトを一意のオブジェクトとして保持する
  • .
  • 文字オブジェクト=1トン