Java设计模式之结构型模式-代理模式(Proxy)

来源:互联网 发布:多空资金指标源码 编辑:程序博客网 时间:2024/06/03 12:30

  “代理”即代表其进行某种活动。在日常生活中,“代理”随处可见。微商有微商的代理,买火车票也有代售点等等。

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

三个要素

  1. Subject: 是RealSubject和Proxy的公共接口,可以在任何使用RealSubject的地方使用Proxy
  2. RealSubject: 具体的所要被代理的对象,是Proxy所要代表的实体类
  3. Proxy: 代理类,保存所要访问实体的引用,并且提供相同的接口

示例

  以去代售点买火车票为例。原本我们买车票直接去火车站购买,现在出来代售点来代表火车站进行售票活动。

实现过程

   1. 创建代理接口 Station

public interface Station {    void buy();}

  2. 创建具体的被代理的对象类 RealStation

public class RealStation implements Station {    private String start;    private String end;    public RealStation(String start, String end) {        this.start = start;        this.end = end;    }    @Override    public void buy() {        System.out.println("===== 开始执行被代理对象方法 =====");        System.out.println("买了一张从 " + start + " 到 " + end + " 的火车票");    }}

  3. 创建代理对象类 Agent

public class Agent implements Station {    private RealStation realStation;    private String start;    private String end;    public Agent(String start, String end) {        this.start = start;        this.end = end;    }    @Override    public void buy() {        System.out.println("===== 开始执行代理对象方法 =====");        if (realStation == null) {            realStation = new RealStation(start, end);        }        realStation.buy();    }}

  4. 创建代理测试类 ProxyTest 测试下

public class ProxyTest {    public static void main(String[] args) {        Station station = new Agent("诸暨", "杭州");        station.buy();    }}

运行的结果如下:

===== 开始执行代理对象方法 ========== 开始执行被代理对象方法 =====买了一张从 诸暨 到 杭州 的火车票
阅读全文
0 0
原创粉丝点击