大話設計模式—-代理模式

一.代理模式:為其他對象提供一種代理以控制對這個對象的訪問。

  可分為四種:

  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圖都省略,直接上程式碼示例。