Javaの静的エージェントの概要


**定義:**エージェント・モードは、元のオブジェクトにアクセスし、元のオブジェクトの代わりにいくつかの操作を行うエージェント・クラスを提供します.**利点:**エージェント・モードを使用すると、既存のクラスを変更しないことを保証しながら(つまり、拡張開放、修正閉鎖の原則を満たす)、既存のクラスにいくつかの機能を追加することができます.エージェントの使用状況は?(1)設計モードの一つの設計原則は開閉原則であり、修正閉鎖対拡張開放ということであり、私たちは仕事の中で多くの先人のコードを引き継ぐことがあり、中のコード論理が頭に入らない場合、コードの修正を手に入れるのが難しい場合、私たちはエージェントを通じてクラスを強化することができます.(2)RPCフレームワークを使用する場合,フレームワーク自体は,各事業者がどのインタフェースを呼び出すべきかを事前に知ることができない.では、このとき、動的エージェントを通じて仲介者をクライアントに使用させることができ、フレームワークの構築ロジックを容易にすることができ、ある程度はクライアントコードとフレームワークの緩やかな結合の表現でもある.(3)SpringのAOPメカニズムは,動的エージェントのメカニズムを用いて接面プログラミングを実現する.注意:エージェントと被エージェントは同じインタフェースを実装します.本文は消費者が黄牛を通じて車を買うシーンを通じてjavaの静的エージェントを簡単に説明する.まず、車を買うのは、共通の業務で、異なる人は、車を買うことができます.車を買うインタフェースを作成する
public interface BuyCar {
    //    
    void maiche();
}

車を買う必要があるお客様、被代理者、張三、李四
public class Xzhangsan implements BuyCar {
    @Override
    public void maiche() {
        System.out.println("  ,      ");
    }
}
public class Xlisi implements BuyCar {
    @Override
    public void maiche() {
        System.out.println("  ,      ");
    }
}

代理者の役割は黄牛が担当し、主に消費者の張三を助け、車を買うと同時に、看板と保険車船税サービスを販売する.
public class HuangNiu implements BuyCar {
	//        
    Xzhangsan xzhangsan;
    Xlisi xlisi;
    //          
    public HuangNiu (Xzhangsan xzhangsan){
        super();
        this.xzhangsan = xzhangsan;
    }
    public HuangNiu (Xlisi xlisi){
        super();
        this.xlisi = xlisi;
    }
    @Override
    public void maiche() {
       tuijian(true);
       xzhangsan.maiche();
//     xlisi.maiche();
       tuijian(false);
    }
	//       
    public void tuijian(boolean isBoolean){
        if(isBoolean){
            System.out.println("     ");
        }else{
            System.out.println("     ");
        }
    }
}

テスト
public class Test {
    public static void main(String[] args) {
        Xzhangsan xzhangsan = new Xzhangsan();
//        Xlisi xlisi = new Xlisi();
        BuyCar buyCar = new HuangNiu(xzhangsan);
//        BuyCar buyCar1 = new HuangNiu(xlisi);
        buyCar.maiche();
//        buyCar1.maiche();
    }
}

最終結果:
車船税張三を代納し、BMW車のナンバープレートと保険を購入する.
利点をまとめる:エージェントモードはクライアントとターゲットオブジェクトの間で仲介の役割を果たし、ターゲットオブジェクトを保護する役割を果たすエージェントオブジェクトはターゲットオブジェクトの機能を拡張することができるエージェントモードはクライアントとターゲットオブジェクトを分離することができ、ある程度システムの結合度の欠点を下げた:エージェントオブジェクトはターゲットオブジェクトと同じインタフェースを実現する必要があるため、したがって、エージェントクラスが多く、クラスが多すぎます.また、インタフェースがメソッドを追加すると、ターゲットオブジェクトとエージェントオブジェクトがメンテナンスされます.