Java プロキシには、jdk 動的プロキシと cglib プロキシが含まれます。ここでは、jdk 動的プロキシについてのみ説明します。JDK 動的プロキシは、主に Java リフレクション メカニズム (つまり、java.lang.reflect パッケージ) を使用します。
原則は次のとおりです (歌手とマネージャーが例です)。
次のようなパブリック インターフェイスを確立します。 シンガー パブリック インターフェイス Singer;
特定のクラスを使用してインターフェイスを実装します。例: Jay Chou、彼は歌手なので、Singer クラスを実装し、MySinger クラスは Singer を実装します。
エージェント クラス (ここではブローカー) を作成します。InvocationHandler クラスを実装し、invoke メソッドを書き直す必要があります。これにより、何かが発生して Jay Chou (具体的なクラス) を見つけたい場合は、最初にブローカー (エージェント クラス) に移動する必要があります。 ) エージェントは、あなたと会うかどうか (このメソッドを実行するかどうか) を決定しています。
1. 歌手インターフェース
パブリック抽象 void sing();
パブリック抽象文字列 s();
}
//バインド
public Object binding(オブジェクトターゲット){
this.target=ターゲット;
//プロキシを元に戻す必要があります
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
//また
public Object invoke(オブジェクトプロキシ、メソッドメソッド、Object[] args)
スロー可能 {
オブジェクト o =null;
System.out.println("トランザクションの開始");
System.out.println("権限の判定");
o = method.invoke(target, args);//実行メソッド
System.out.println("トランザクションの終了");
を返します。
}
}