代理模式是結構型模式。
代理模式給某一個對象提供一個代理對象,并由代理對象控制對原對象的引用。
代理對象要繼承于抽象主題,并控制原對象的引用
二、簡單例子抽象主題類
package proxy;/* * 抽象主題 */public abstract class Subject {/* * 請求方法 */ abstract public void Request();}真實主題類,繼承抽象
package proxy;/* * 真實主題 */public class RealSubject extends Subject { @Override public void Request() { System.out.println("真實主題實現請求!"); }}代理主題
package proxy;/* * 代理主題 */public class ProxySubject extends Subject { private RealSubject realSubject; @Override public void Request() { //請求前代理主題自己的操作 preRequest(); //判斷是否為空 if(realSubject==null){ //實例化 realSubject=new RealSubject(); } //調用真實主題的響應方法 realSubject.Request(); //請求后代理主題自己的操作 postRequest(); } private void preRequest(){ System.out.println("請求前代理主題自己的操作!"); } private void postRequest(){ System.out.println("請求后代理主題自己的操作!"); }}測試類
package proxy;/* * 代理主題測試類 */public class Test { public static void main(String[] args) { //聲明抽象主題,并實例化為代理主題 Subject subject=new ProxySubject(); //調用代理主題的響應方法 subject.Request(); }}結果:
請求前代理主題自己的操作!真實主題實現請求!請求后代理主題自己的操作!
新聞熱點
疑難解答