易学设计形式六 代理模式(Proxy)

易学设计模式六 代理模式(Proxy)
代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。


易学设计形式六 代理模式(Proxy)

public abstract class Subject {
	abstract public void request();
}


public class RealSubject extends Subject {
	public void request() {
		System.out.println("From real subject");
	}
}


public class ProxySubject extends Subject {

	private RealSubject realSubject;
	
	public ProxySubject() {
		realSubject = new RealSubject();
	}
	
	public void request() {
		preRequest();
		realSubject.request(); //输出一次
		realSubject.request(); //输出二次
		postRequest();
	}
	
	public void preRequest() {
		System.out.print("before request");
	}
	
	public void postRequest() {
		System.out.println("after request");
	}
}


public class Client {
	public static void main(String[] args) {
		Subject subject = new ProxySubject();
		subject.request();
	}
}


输出:

before requestFrom real subject
From real subject
after request

有个疑问:代理类里面输出两次才能打出真实类的一句语句,很怪,怪怪怪