代理模式(西门庆版)

代理模式

什么是代理模式?有别人找你做事,而你没空,所以找一个代理人帮你做。

举一个鲜明的例子: 西门庆, 王婆,潘金莲

​ 西门庆 无法 直接 与 潘金莲 交往(用词委婉一点),所以找王婆做代理,而王婆与潘金莲同属于一种类型的人(即女人),这种人有个方法,一:抛媚眼(make eyes),二:做快乐事(happyAndMan)

// 女人接口
public interface WomenKind {
    // 抛媚眼
    void makeEyes();
    // 做快乐的事
    void happyAndMan();

}
// 潘金莲 不直接做事
public class PanJinLian implements WomenKind{

    @Override
    public void makeEyes() {
        System.out.println("潘金莲 对西门庆抛媚眼");
    }

    @Override
    public void happyAndMan() {
        System.out.println("潘金莲 做快乐的事");
    }
}
// 王婆 做代理
public class WangPo implements WomenKind{
    private PanJinLian panJinLian;

    public WangPo() {
        panJinLian = new PanJinLian();
    }
    // 做代理,王婆 老了 ,不能做此事,所以只能做代理,实际做事的还是潘金莲
    @Override
    public void makeEyes() {
        this.panJinLian.makeEyes();
    }

    @Override
    public void happyAndMan() {
        this.panJinLian.happyAndMan();
    }
}
// 西门庆 上场
public class XiMenQing {
    public static void main(String[] args) {
        System.out.println("西门庆无意之中 看到潘金莲 ,不免情窦初开");
        System.out.println("找到王婆,我婆 说 我来做代理");
        WomenKind wangPo = new WangPo();
        wangPo.makeEyes();
        wangPo.happyAndMan();
    }
}

水浒传中还有一个类似的例子: 卢俊义的老婆 贾氏 和 固管家

// 贾氏
public class JiaShi implements WomenKind{
    @Override
    public void makeEyes() {
        System.out.println("贾氏 对西门庆 抛媚眼");
    }

    @Override
    public void happyAndMan() {
        System.out.println("贾氏 做快乐的事");
    }
}
// 王婆
public class WangPo implements WomenKind{
    private JiaShi jiaShi;

    public WangPo() {
        jiaShi = new JiaShi();
    }
    // 做代理,王婆 老了 ,不能做此事,所以只能做代理,实际做事的还是贾氏
    @Override
    public void makeEyes() {
        this.jiaShi.makeEyes();
    }

    @Override
    public void happyAndMan() {
        this.jiaShi.happyAndMan();
    }
}
// 西门庆
public class XiMenQing {
    public static void main(String[] args) {
        WomenKind wangPo = new WangPo();
        wangPo.makeEyes();
        wangPo.happyAndMan();
    }
}

代理只用了多态,干活的是被代理类,代理类主要负责接活,具体找被代理类干,代理类如何知道被代理类要干甚呢?如何知根知底,定义接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值