大话设计模式—-代理模式

一.代理模式:为其他对象提供一种代理以控制对这个对象的访问。

  可分为四种:

  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图都省略,直接上代码示例。