JAva設計モードポリシーモード
1918 ワード
一、戦略モードはアルゴリズムファミリーモードとも呼ばれ、異なるアルゴリズムファミリーを定義し、互いに置換することができ、このモードはアルゴリズムの変化をアルゴリズムを使用する顧客とは独立させる.ポリシーモードの利点は、オブジェクトの動作を動的に変更できることです.ポリシー・モードは、アプリケーションが特定のサービスまたは機能を実装する必要があり、プログラムに複数の実装方法がある場合に使用するのに適しています.
二、設計原則:1つのクラスの中で常に変化しているか、将来変化する可能性がある部分を抽出し、1つのインタフェースとして抽出し、クラスにこのオブジェクトのインスタンスを含め、クラスのインスタンスが実行時にこのインタフェースを実現したクラスの動作を勝手に呼び出すことができる.
ポリシー・モードには、次の3つのオブジェクトがあります.
a.環境オブジェクト:このクラスで抽象ポリシーで定義されたインタフェースまたは抽象クラスへの参照を実現する
b.抽象ポリシーオブジェクト:インタフェースまたは抽象クラスによって実現可能
c.具体的な策略の対象:実現をカプセル化した
抽象ポリシーオブジェクト:
特定のポリシー・オブジェクト:
環境オブジェクト:
TEST:
二、設計原則:1つのクラスの中で常に変化しているか、将来変化する可能性がある部分を抽出し、1つのインタフェースとして抽出し、クラスにこのオブジェクトのインスタンスを含め、クラスのインスタンスが実行時にこのインタフェースを実現したクラスの動作を勝手に呼び出すことができる.
ポリシー・モードには、次の3つのオブジェクトがあります.
a.環境オブジェクト:このクラスで抽象ポリシーで定義されたインタフェースまたは抽象クラスへの参照を実現する
b.抽象ポリシーオブジェクト:インタフェースまたは抽象クラスによって実現可能
c.具体的な策略の対象:実現をカプセル化した
抽象ポリシーオブジェクト:
package com.yangguangfu.strategy;
/**
*
*/
public interface IStrategy {
//
public void operate();
}
特定のポリシー・オブジェクト:
/**
*
*/
public class BlackEnemy implements IStrategy {
@Override
public void operate() {
System.out.println(" , !");
}
}
環境オブジェクト:
/**
*
*/
public class Context {
private IStrategy strategy;
// ,
public Context(IStrategy strategy){
this.strategy = strategy;
}
public void operate(){
this.strategy.operate();
}
}
TEST:
public class Test{
public static void main(String[] args){
Context context;
// !!!
context = new Context(new BlackEnemy());
context.operate();
}
}