代理模式【Proxy Pattern】

小故事: 什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧;就比如古代每个男人的爱好–逛青楼;初来乍到的你肯定不知道哪个姑娘更加风情万种,所以这个时候你需要找到老鸨给你推荐(啧啧啧),老鸨其实就是这些姑娘们的代理人;那么用java程序怎么表示呢,接下来就见分晓

代码演示:

1、首先定义一种类型(既然都在青楼中,里面的姑娘肯定都是同一种类型,包括老鸨)

package com.design.dp.proxy;
// 定义姑娘们的类型以及她们能做的事情
public interface KindWomen {
    // 姑娘们肯定都会招呼客官
    void callCust();
    // you know,happy
    void happyWithMan();
}

2、既然知道了类型,那么下面就是具体的姑娘了

package com.design.dp.proxy;
// 这个是秋香,唐伯虎的最爱
public class QiuXiang implements KindWomen{
    @Override
    public void callCust() {
        System.out.println("秋香正在招呼客人");
    }

    @Override
    public void happyWithMan() {
        System.out.println("秋香正在跟客人做一些不可描述的事情...");
    }
}
package com.design.dp.proxy;

public class LaoBao implements KindWomen{
    KindWomen kindWomen;
    // 可以默认秋香接客哦
	public LaoBao() { this.kindWomen = new QiuXiang();}
    public LaoBao(KindWomen kindWomen) {
        this.kindWomen = kindWomen;
    }
    // 老鸨一般都是正襟危坐,哈哈
    @Override
    public void callCust() {
        this.kindWomen.callCust();
    }
    // 老鸨肯定不会再接客了,但是她会给你推荐姑娘啊
    @Override
    public void happyWithMan() {
        this.kindWomen.happyWithMan();
    }
}

3、姑娘们都已经迫不及待了,那么此时的大人物该出场了–武大郎

package com.design.dp.proxy;
// 武大郎深情款款的走来了
public class WuDaLang {
    public static void main(String[] args) {
        LaoBao laoBao = new LaoBao();
        laoBao.callCust(); // 此时实际上是秋香在招呼武大郎
        laoBao.happyWithMan(); // 然后秋香跟武大郎走进了房间...
    }
}

实际上这就是典型的代理模式:武大郎通过老鸨跟秋香鬼混在了一起,如果没有老鸨这一代理人,那么潘金莲就会发现武大郎的鬼鬼祟祟了

总结: 代理模式主要使用了 Java 的多态,干活的是被代理类;代理类主要是接活;因为代理人跟被代理人实现了同一个接口,所以代理人清楚的知道被代理人的身体情况,能不能干活

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值