エージェントモード
プロキシモデルは英語でのプロキシまたはサロゲートと呼ばれ、どちらも中国語で「エージェント」として翻訳できます。いわゆるプロキシとは、ある人または機関が別の人または別の機関に代わって行動を起こすことを意味します。場合によっては、クライアントがオブジェクトを必要としないか、直接参照することができず、プロキシオブジェクトはクライアントとターゲットオブジェクトの間の仲介者として機能することができます
A.抽象的なテーマの役割
実際のトピックとプロキシトピックの間の一般的なインターフェイスを宣言して、実際のトピックを使用できるようにします。
B.プロキシの役割:
エージェントテーマの役割には、実際のトピックへの参照が含まれているため、実際のトピックオブジェクトをいつでも操作できます。エージェントテーマの役割は、実際のトピックロールと同じインターフェイスを提供するため、実際のトピックをいつでもリファレンスを制御するために実際のトピックを制御できるようにし、必要に応じて実際のトピックオブジェクト(および実際のトピックオブジェクトを削除する)を作成する責任があります。エージェントの役割は通常、実際のトピックオブジェクトに通話を単に渡すのではなく、クライアントコールを実際のトピックに渡す前または後に操作を実行します。
C.本当のテーマの役割
プロキシロールで表される実際のオブジェクトを定義します
例えば:
動的プロキシモードでのリファクタリング
JDKダイナミックプロキシ
ターゲットクラスインターセプタープロキシクラス
概要:1。JDKProxyによって生成されたプロキシクラスがインターフェイスを実装するため、ターゲットクラスのすべてのメソッドがプロキシクラスに含まれています。
2。生成されたプロキシクラスのすべての方法ターゲットクラスのすべてのメソッドをインターセプトします。インターセプターのInvokeメソッドの内容は、プロキシクラスの各メソッドの構成です。
3. JDKProxyを使用するときは、インターフェイスが存在する必要があります。
4. Invokeメソッドの3つのパラメーターは、呼び出されたメソッドのAPI、呼び出されたメソッドのパラメーター、およびターゲットクラスの呼び出されたメソッドの戻りタイプにアクセスできます。
JDKダイナミックプロキシモードでのリファクタリング
JDKダイナミックプロキシモードを使用した冬眠トランザクションの再構築
CGLIBダイナミックプロキシ
1。CGLIBは、強力で高性能で高品質のコード生成クラスライブラリです。 Javaクラスを拡張し、ランタイム中にJavaインターフェイスを実装できます。
2. CGLIBを使用して、ターゲットクラスのサブクラスとしてプロキシクラスを生成します。
3.CGLIBを使用してプロキシクラスを生成するためにインターフェイスは必要ありません
4. CGLIBによって生成されたプロキシクラスは、親クラスのメソッドを上書きします。
5.インターセプター内のインターセプトメソッドの内容は、プロキシクラスのメソッド本体です。
CGLIBダイナミックプロキシモードを使用して、冬眠トランザクションをリファクタリングします
春の2つのプロキシメソッド
1.ターゲットオブジェクトがいくつかのインターフェイスを実装する場合、SpringはJDKのJava.lang.Reflect.Proxyクラスプロキシを使用します。
利点:インターフェイスがあるため、システムはよりゆるく結合されています。短所:ターゲットクラスごとにインターフェイスを作成します。
2.ターゲットオブジェクトがインターフェイスを実装していない場合、SpringはCGLIBライブラリを使用してターゲットオブジェクトのサブクラスを生成します。
利点:プロキシクラスとターゲットクラスが継承されているため、インターフェイスが存在する必要はありません。
短所:インターフェイスが使用されていないため、システムのカップリングはJDKを使用した動的プロキシほど良くありません。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。