ホームページ > Java > &#&チュートリアル > Java 静的プロキシと動的プロキシの詳細な学習

Java 静的プロキシと動的プロキシの詳細な学習

黄舟
リリース: 2016-12-12 13:24:50
オリジナル
1783 人が閲覧しました

1. プロキシ モード
プロキシ モードは、一般的に使用される Java 設計パターンであり、プロキシ クラスと委任クラスが同じインターフェイスを持っている点が特徴です。プロキシ クラスは主に委任クラスのメッセージの前処理、メッセージのフィルタリング、メッセージを委任クラスに転送し、その後メッセージを処理するなど。
通常、プロキシ クラスとデリゲート クラスの間には関連付けがあります。プロキシ クラスのオブジェクト自体は、実際にはサービスを実装しませんが、関連するメソッドを呼び出すことによって関連付けられます。特定のサービスを提供するデリゲート クラスのオブジェクト。
エージェントの作成時期に応じて、エージェント クラスは 2 つのタイプに分類できます。
静的プロキシ: プログラマーによって作成されるか、特定のツールによって自動的に生成されてコンパイルされます。プロキシ クラスの .class ファイルは、プログラムの実行前にすでに存在しています。
動的プロキシ: プログラムの実行時にリフレクション メカニズムを使用して動的に作成されます。

2. 単一の静的エージェント

码如下:
public interface CountDao 
{ 
// 查看账户方法 
public void queryCount(); 
} 
public class CountDaoImpl implements CountDao 
{ 
public void queryCount() 
{ 
System.out.println("查看账户方法..."); 
} 
} 
public class CountTrancProxy implements CountDao 
{ 
private CountDao countDao; 
public CountProxy(CountDao countDao) 
{ 
this.countDao = countDao; 
} 
@Override 
public void queryCount() 
{ 
System.out.println("tranc start"); 
countDao.queryCount(); 
System.out.println("tranc end"); 
} 
} 
public class TestCount 
{ 
public static void main(String[] args) 
{ 
CountTrancProxy countProxy = new CountTrancProxy(new CountDaoImpl()); 
countProxy.updateCount(); 
} 
}
ログイン後にコピー

tranc start
View accountメソッド...
tranc end
3. 複数の静的エージェント
を追加しました

码如下:
public class CountLogProxy implements CountDao 
{ 
private CountDao countDao; 
public CountLogProxy(CountDao countDao) 
{ 
this.countDao = countDao; 
} 
@Override 
public void queryCount() 
{ 
System.out.println("Log start"); 
countDao.queryCount(); 
System.out.println("Log end"); 
} 
}
ログイン後にコピー

トランザクション処理前に
Log start
をベースにView accountメソッドを実行します。 ..
トランザクション処理後
ログ終了
4. まとめ
実際、プロキシ クラスは継承またはインターフェイス実装によってプロキシの効果を実現するために使用できますが、複数のプロキシ クラスを相互に組み合わせる必要がある場合、継承は柔軟ではなく、プロキシ クラスを常に実行する必要があります。インターフェイスを実装する方法は、集約を通じてプロキシ クラスを簡単に結合することです。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート