proxy学習ノート(静的エージェント)1


1. エージェントに関連する概念
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();
	}

}

以上!