設計モードのポリシーモード(動作モード)&ファクトリモード(作成モード)


前言:戦略モデルと工場モデルが似ていて、よく混同されていますが、この2つの設計モデルを紹介します.
ポリシー・モード
  • は、クラスの動作またはそのアルゴリズムを で定義することができる.このタイプの設計モードは
  • に属する.
  • 適用シーン
  • システムに多くのクラスがあり、それらの違いはそれらの動作だけである場合、ポリシーモードを使用して、1つのオブジェクトが多くの動作の中で1つの動作を動的に選択することができる.
  • システムは、いくつかのアルゴリズムの中で1つを動的に選択する必要がある.
  • オブジェクトに多くの動作がある場合、適切なモードを使用しない場合、これらの動作は複数の条件選択文を使用して実現するしかありません.
  • モード構造
  • 環境(Context):Strategyの参照を持つ
  • 抽象ポリシー(IStrategy):ポリシーインタフェース
  • 特定のポリシー実装(StrategyImpl):関連アルゴリズムまたは動作をパッケージ(実装)する
  • の長所と短所の利点:アルゴリズムは自由に切り替えることができる;多重条件の判断を避ける.拡張性の良い欠点:ポリシークラスが増加します.すべてのポリシークラスは、
  • を外部に暴露する必要があります.
  • 例のポリシーモードコード実装ポリシーモード作成
  • 工場モード
  • は、製品オブジェクトを作成するファクトリインタフェースを定義し、製品オブジェクトの実際の作成作業を特定のサブファクトリクラスに遅らせる.これは、作成モードで要求される の特徴を満たす.工場モデルは
  • に属する
  • カテゴリ
  • 単純ファクトリモード(Simple Factory)単純ファクトリモードの最大の利点は、オブジェクトの作成とオブジェクトの使用の分離を実現し、オブジェクトの作成を専門のファクトリクラスに任せることであるが、その最大の欠点は、ファクトリクラスが柔軟ではなく、新しいボディ製品を追加するにはファクトリクラスの判断論理コードを修正する必要があり、製品が多い場合、ファクトリメソッドコードは非常に複雑になります.
  • ファクトリメソッドモデル(Factory Method)ファクトリメソッドモデルは、単純ファクトリモデルのさらなる抽象化と普及である.オブジェクト向けの多態性を用いたため,ファクトリメソッドモードは単純なファクトリモードの利点を維持し,その欠点を克服した.ファクトリメソッドモデルでは、コアのファクトリクラスはすべての製品の作成を担当するのではなく、特定の作成作業をサブクラスに渡します.このコアクラスは、特定の工場が実装しなければならないインタフェースを与えるだけで、製品クラスがインスタンス化されることを担当しない.これにより、工場メソッドモデルは、工場の役割を変更することなく、システムが新しい製品を導入することを可能にする.
  • 抽象ファクトリモード(Abstract Factory)このモードはファクトリメソッドモードのさらなる拡張である.工場メソッドモデルでは、1つの具体的な工場が1つの具体的な製品、すなわち1対1の関係を生産する責任を負うが、1つの具体的な工場が複数の製品オブジェクトを生産する必要がある場合は、抽象的な工場モデルを使用する必要がある.
  • 例3種類のファクトリ作成例参照ファクトリモード作成
  • ポリシー・モードとファクトリ・モードの比較
  • 類似点はモード構造において両者が類似している.すべてインタフェースを利用して、サブクラスは実現します(継承と多態).
  • 差異
  • 用途が異なる工場は で、その役割はオブジェクトを作成することです.ポリシーは ,です.その役割は、1つのオブジェクトに多くの動作の中で1つの動作を選択させることです.
  • 注目点が異なる1つの注目オブジェクト 1つの注目 のパッケージ
  • .
  • 異なる問題を解決するファクトリモードは、命令を受け、要求に合致するインスタンスを作成する作成型の設計モードである.主に、リソースの統一的な配布を解決し、オブジェクトの作成を完全に独立させ、オブジェクトの作成と特定の使用顧客に関係なくします.主にマルチデータベース選択、クラスライブラリファイルロードなどに適用されます.ポリシー・モードは、ポリシーの切り替えと拡張を解決するために解決され、より簡潔にはポリシー・ファミリーを定義し、それぞれカプセル化して、彼らの間で互いに置き換えることができ、ポリシー・モードはポリシーの変化をポリシーを使用する顧客とは独立させる.