proxy学習ノート(静的エージェント)1
1. エージェントに関連する概念
1)抽象的な役割
2)リアルロール(抽象ロールの実装は,真のクライアントが操作するオブジェクトである)
3)エージェントロール(抽象ロールの実装では、実際の比較色の参照があり、エージェントオブジェクトで追加操作が可能)
2.クライアントクラスのオブジェクトを定義し、エージェントクラスによるターゲットクラスの操作を実現する
以上!
1)抽象的な役割
public abstract class Subject {
public abstract void reuquest();
}
2)リアルロール(抽象ロールの実装は,真のクライアントが操作するオブジェクトである)
public class RealSubject extends Subject {
@Override
public void reuquest() {
System.out.println("from real subject.");
}
}
3)エージェントロール(抽象ロールの実装では、実際の比較色の参照があり、エージェントオブジェクトで追加操作が可能)
public class ProxySubject extends Subject {
//
private RealSubject realSubject;
@Override
public void reuquest() {
this.preRequest();
if(null == realSubject){
realSubject = new RealSubject();
}
realSubject.reuquest();//
this.postRequest();
}
private void preRequest(){
System.out.println("pre request");
}
private void postRequest(){
System.out.println("post request");
}
}
2.クライアントクラスのオブジェクトを定義し、エージェントクラスによるターゲットクラスの操作を実現する
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
Subject subject = new ProxySubject();
subject.reuquest();
}
}
以上!