王学岗代理模式

来源:互联网 发布:怎么安装mac os x 编辑:程序博客网 时间:2024/06/06 10:38

代理模式定义:为其他对象提供一种代理,控制对这个对象的访问
代理模式角色:
Proxy:代理对象,实现目标接口并且持有目标接口的引用
Subject:目标接口
RealSubject:具体的目标对象
举个例子,苹果发布会,我想买一台iphone,行货比较贵,港货比较便宜,大陆买不到港货,我人在杭州,找一个代理商,我告诉他我要的手机型号,让代理商帮我买;
我们分析下角色:
代理商就是Proxy(代理对象)
Subject(目标接口):我的想法,具体操作,场景业务,一个人
RealSubject(具体的目标对象):我
下面我写下这个简单的例子
看下目标借口(人)代码

public interface IPerson {/** * 目标接口:人 */    //购物     public void buyProduct();     //支付     public void payProduct();}

具体的人的代码

/** * 具体的目标对象 *  * @author acer *  */public class ConcretePerson implements IPerson {    public void buyProduct() {        System.out.println("我要买港货iphone");    }    public void payProduct() {        System.out.println("支付6000");    }}

代理类的代码

/** * Proxy:代理对象 *  */public class Proxy implements IPerson {    // 持有目标对象的引用,代理商总要知道他给谁代理    private IPerson person;    public Proxy(IPerson person) {        this.person = person;    }    public void buyProduct() {        person.buyProduct();    }    public void payProduct() {        person.payProduct();    }}

然后看下我们的main方法

public class Client {    public static void main(String[] args) {        ConcretePerson person=new ConcretePerson();        Proxy proxy=new Proxy(person);        proxy.buyProduct();        proxy.payProduct();    }}

看下打印输出


我要买港货iphone
支付6000
-

看下统一建模图
这里写图片描述
从上面的图中可以看出,代理对象和具体对象处于同一层次,是关联关系,并且是单向关联。

原创粉丝点击