王学岗代理模式

代理模式定义:为其他对象提供一种代理,控制对这个对象的访问
代理模式角色:
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
-

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值