设计模式之代理模式

代理模式解析
本文通过一个具体的例子解释了代理模式的概念及其实现方式。利用NBA球星库里的表演赛行程安排作为场景,说明了如何通过代理对象来间接调用目标对象的方法,并在此过程中增加了额外的功能。

    所谓的代理模式其实就是和中介差不多,它避免了我们对对象的直接访问,同时也提供了对对象功能的扩展能力,举个例子:假如一家企业为了自身的品牌宣传想找NBA的球星库里来中国打一场表演赛,双方需要沟通活动的行程以及合同事宜,显然这些事情如果直接和库里沟通不太合适,一来人家很忙,二是合同相关的他可能也不太专业,所以实际操作中往往是通过他的经纪人来谈定这些事情,那经纪人在这里就充当了代理的作用,类似功能的还有律师、房屋中介等都属于这种类型

    好了,那接下来我们就用代码来实现这一流程

    首先,我们需要定义下活动的行程,相当于写作文的提纲,这里就先定义一个打篮球的活动

public interface Player{
    //这里是活动行程-打篮球
    void playBasketball();
}

    既然活动行程订好了,接下来大家就要按照行程办事,所以被代理对象库里一定是要能完成这一功能的,不然怎么玩。。。

/* 库里 */
public class Curry implements Player{
    @Override
    public void playBasketball() {
        System.out.println("库里打篮球。。。");
    }
}

    其次是他的经纪人,也就是代理也需要实现这一接口,但是他不需要自己去完成,他只是个代理,找他代理的球星去完成这一任务就行了

/* 经纪人 */
public class Broker implements Player {
    /*运动员就是经纪人的代理对象,这里注入运动员就相当于是具备让运动员去打球的能力*/
    Player player;
    /*创建代理对象时注入被代理对象,这个好理解,经纪人找谁来打球这个得清楚吧*/
    public Broker(Player player){
        this.player = player;
    }

    @Override
    public void playBasketball() {
        System.out.println("安排行程");
        player.playBasketball();
        System.out.println("收钱")
    }
}

    最后执行打球的活动

public class Game {
    public static void main(String[] args) {
        Curry curry = new Curry();
        Broker broker = new Broker(curry);
        /*只要去找经纪人,他就会安排库里打球*/
        broker.playBasketball();
    }
}

到此,整个代理过程就算是完成了(静态代理)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值