定義: 為其他對象提供一種代理以控制對這個對象的訪問。 結構:(書中圖,侵刪) 一個定義公共方法的介面 一個真實實體 一個含有真實實體引用的代理類 我思考了一下,咱們的科學上網就是一種代理 如上圖,假如要訪問油管,我們需要先將請求發給代理伺服器,由代理伺服器幫我們訪問目標網站。 但是一般這種目標網站 ...
定義:
為其他對象提供一種代理以控制對這個對象的訪問。結構:(書中圖,侵刪)
一個定義公共方法的介面 一個真實實體 一個含有真實實體引用的代理類實例:
我思考了一下,咱們的科學上網就是一種代理 如上圖,假如要訪問油管,我們需要先將請求發給代理伺服器,由代理伺服器幫我們訪問目標網站。 但是一般這種目標網站是不知道真正訪問的人——也就是我的存在的。 用代碼來表示: 公共介面,都有訪問的方法package designpattern.proxy; public interface Visit { void visit(String address); }
真實類(自己的電腦):
package designpattern.proxy; public class PC implements Visit { @Override public void visit(String address) { System.out.println("訪問" + address); } }
代理類(代理伺服器):
package designpattern.proxy; public class Proxy implements Visit { PC pc; public Proxy(PC pc) { this.pc = pc; } @Override public void visit(String address) { pc.visit(address); } }
客戶端:
package designpattern.proxy; public class Client { public static void main(String[] args) { Proxy proxy = new Proxy(new PC()); proxy.visit("youtube.com"); } }結果輸出:
訪問youtube.com
總結:
這個設計模式相對來說比較簡單,就相當於授權給別人,讓別人幫我幹事; 有點像古代尚方寶劍的感覺,見到此劍,如朕親臨。(一不小心中二了起來) 生活中也很常見,所以理解起來比較容易。