動態代理一:初識代理模式
阿新 • • 發佈:2018-12-13
程式碼分析
//公共介面 interface Subject { //公共方法 void request(); } //委託類 class RealSubject implements Subject { //委託類的request邏輯 public void request(){ System.out.println("RealSubject Eat eggs"); } } //代理類 class Proxy implements Subject { //維持一個Subject引用 private Subject subject; //初始化Proxy物件時,通過構造器注入的方式傳入Subject引用 public Proxy(Subject subject){ this.subject = subject; } //代理類的request邏輯 public void request(){ System.out.println("begin eat eggs"); //呼叫真實代理物件的request方法 subject.request(); System.out.println("end eat eggs"); } } //客戶端 public class Client { public static void main(String args[]) { //例項化委託類 RealSubject subject = new RealSubject(); //例項化代理類,傳入委託類的引用 Proxy p = new Proxy(subject); //呼叫代理類的request方法 p.request(); } }
概念:
代理模式(Proxy Pattern),也稱為委託模式(Delegate Pattern)。
代理模式給某一個物件提供一個代理物件,並由代理物件控制對原物件的引用[1]。
代理模式結構圖:
代理模式結構說明:
1:RealSubject 是委託類,Proxy 是代理類;
2:Subject是委託類和代理類的抽象介面,客戶端針對Subject程式設計;
3:Subject有一個Request()方法,委託類和代理類公有的,必須實現;
4:Proxy擁有對RealSubject的真實引用,一般通過構造方法注入這個引用;
5:Proxy的request方法中,呼叫了RealSubject類的request方法,並且可以在委託類的request方法前後呼叫其他方法。
[1]:《Java與模式》P493