大話設計模式—-代理模式
- 2020 年 4 月 1 日
- 筆記
一.代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
可分為四種:
1.遠程代理:為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在於不同地址空間的事實。
2.虛擬代理:真實對象的創建需要很大的開銷,通過代理來實現它,減少開銷,例如:大的圖片載入。
3.安全代理:用來控制真實對象訪問時的許可權。
4.智慧指引:當調用真實對象時,代理處理一些事。
二.UML省略。。。
三.程式碼示例
public interface GiveGift { void giveDolls(); void giveFlowers(); void giveChocolate(); } @Data public class SchoolGirl { private String name; private String age; } public class Pursuit implements GiveGift { SchoolGirl schoolGirl; public Pursuit(SchoolGirl schoolGirl) { this.schoolGirl = schoolGirl; } @Override public void giveDolls() { System.out.println(schoolGirl.getName() + "送你洋娃娃"); } @Override public void giveFlowers() { System.out.println(schoolGirl.getName() + "送你鮮花"); } @Override public void giveChocolate() { System.out.println(schoolGirl.getName() + "送你巧克力"); } } public class Proxy implements GiveGift { Pursuit pursuit; public Proxy(SchoolGirl schoolGirl) { this.pursuit = new Pursuit(schoolGirl); } @Override public void giveDolls() { pursuit.giveDolls(); } @Override public void giveFlowers() { pursuit.giveFlowers(); } @Override public void giveChocolate() { pursuit.giveChocolate(); } } public class TestProxy { public static void main(String[] args) { SchoolGirl schoolGirl = new SchoolGirl(); schoolGirl.setName("小龍女"); Proxy proxy = new Proxy(schoolGirl); proxy.giveFlowers(); proxy.giveDolls(); proxy.giveChocolate(); } }
以後所有的UML圖都省略,直接上程式碼示例。