Javaの静的エージェントの概要
**定義:**エージェント・モードは、元のオブジェクトにアクセスし、元のオブジェクトの代わりにいくつかの操作を行うエージェント・クラスを提供します.**利点:**エージェント・モードを使用すると、既存のクラスを変更しないことを保証しながら(つまり、拡張開放、修正閉鎖の原則を満たす)、既存のクラスにいくつかの機能を追加することができます.エージェントの使用状況は?(1)設計モードの一つの設計原則は開閉原則であり、修正閉鎖対拡張開放ということであり、私たちは仕事の中で多くの先人のコードを引き継ぐことがあり、中のコード論理が頭に入らない場合、コードの修正を手に入れるのが難しい場合、私たちはエージェントを通じてクラスを強化することができます.(2)RPCフレームワークを使用する場合,フレームワーク自体は,各事業者がどのインタフェースを呼び出すべきかを事前に知ることができない.では、このとき、動的エージェントを通じて仲介者をクライアントに使用させることができ、フレームワークの構築ロジックを容易にすることができ、ある程度はクライアントコードとフレームワークの緩やかな結合の表現でもある.(3)SpringのAOPメカニズムは,動的エージェントのメカニズムを用いて接面プログラミングを実現する.注意:エージェントと被エージェントは同じインタフェースを実装します.本文は消費者が黄牛を通じて車を買うシーンを通じてjavaの静的エージェントを簡単に説明する.まず、車を買うのは、共通の業務で、異なる人は、車を買うことができます.車を買うインタフェースを作成する
車を買う必要があるお客様、被代理者、張三、李四
代理者の役割は黄牛が担当し、主に消費者の張三を助け、車を買うと同時に、看板と保険車船税サービスを販売する.
テスト
最終結果:
車船税張三を代納し、BMW車のナンバープレートと保険を購入する.
利点をまとめる:エージェントモードはクライアントとターゲットオブジェクトの間で仲介の役割を果たし、ターゲットオブジェクトを保護する役割を果たすエージェントオブジェクトはターゲットオブジェクトの機能を拡張することができるエージェントモードはクライアントとターゲットオブジェクトを分離することができ、ある程度システムの結合度の欠点を下げた:エージェントオブジェクトはターゲットオブジェクトと同じインタフェースを実現する必要があるため、したがって、エージェントクラスが多く、クラスが多すぎます.また、インタフェースがメソッドを追加すると、ターゲットオブジェクトとエージェントオブジェクトがメンテナンスされます.
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車のナンバープレートと保険を購入する.
利点をまとめる:エージェントモードはクライアントとターゲットオブジェクトの間で仲介の役割を果たし、ターゲットオブジェクトを保護する役割を果たすエージェントオブジェクトはターゲットオブジェクトの機能を拡張することができるエージェントモードはクライアントとターゲットオブジェクトを分離することができ、ある程度システムの結合度の欠点を下げた:エージェントオブジェクトはターゲットオブジェクトと同じインタフェースを実現する必要があるため、したがって、エージェントクラスが多く、クラスが多すぎます.また、インタフェースがメソッドを追加すると、ターゲットオブジェクトとエージェントオブジェクトがメンテナンスされます.