23种设计模式-代理模式《中介公司》

对于许久不用的东西,容易忘记。百度许久,也未能找到自己所要。 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧

一个人避免不了与中介打交道,比如租房,你很少会遇上房东,而是所谓的二房东,等等。。。更有甚者,假如我是某校的校长,我不方便收礼,我弄一个亲近的人做代理,有事都去找他吧。。。

今天就举一个刘备三顾茅庐的故事吧,当然我这边的故事又很大的差别。

刘备想要求才,首先他要去人才市场…

诸葛亮和刘备去找工作,却找不到,无奈之下去找阿三,让阿三做代理。

在人才市场找到阿三,于是阿三开始介绍诸葛亮与周瑜…

程序:

首先定义一个类型,跟诸葛亮同类型的存在,比如周瑜,司马懿,郭嘉。他们都是谋士,都会出谋划策。他们的代理都是阿山吧。

package com.yancy.proxy;

/**
 * 谋士
 * 
 * @author yancy
 * 
 */
public interface StrategicAdviser {

    public void giveAdvice();
}

定义诸葛亮的类

package com.yancy.proxy;

/**
 * 这是诸葛亮谋划
 * 
 * @author yancy
 * 
 */
public class Zhugeliang implements StrategicAdviser {

    public void giveAdvice() {
        // TODO Auto-generated method stub
        System.out.println("诸葛先生高卧隆中...");
    }

}

定义周瑜的类

package com.yancy.proxy;

/**
 * 周瑜的谋划
 * 
 * @author yancy
 * 
 */
public class Zhouyu implements StrategicAdviser {

    public void giveAdvice() {
        // TODO Auto-generated method stub
        System.out.println("周郎妙计安天下,赔了夫人又折兵");
    }

}

阿三会做什么事情,我不管,我只需要知道周瑜和诸葛亮会做什么就可以了

package com.yancy.proxy;

/**
 * 这是诸葛亮与周瑜可以做的事情,由阿三代为述说,提高身价
 * 
 * @author yancy
 * 
 */
public class ASan implements StrategicAdviser {
    private StrategicAdviser adviser;

    /**
     * 他可以是诸葛亮和周瑜的代理
     * 
     * @param adviser
     */
    public ASan(StrategicAdviser adviser) {
        // TODO Auto-generated constructor stub
        this.adviser = adviser;
    }

    public void giveAdvice() {
        // TODO Auto-generated method stub
        adviser.giveAdvice();
    }

}


阿三开始向刘备推销诸葛亮和周瑜。

package com.yancy.proxy;

public class Liubei {

    public static void main(String[] args) {

        // 1. 阿三手上有周瑜,诸葛亮
        Zhouyu yu = new Zhouyu();
        Zhugeliang liang = new Zhugeliang();

        // 2. 刘备想要人才,先去人才公司见阿三 阿三推荐周瑜 与诸葛亮
        ASan sanYu = new ASan(yu);
        ASan sanLiang = new ASan(liang);

        // 3. 阿三述说诸葛亮与周瑜的技术
        sanYu.giveAdvice();
        sanLiang.giveAdvice();
    }
输出结果
        周郎妙计安天下,赔了夫人又折兵
        诸葛先生高卧隆中...
至于刘备的选择,我们就不讨论了。

代理模式主要用到了Java三大特性中的多态,干活的主要是被代理类,代理的类起到的是中介的作用。

猜你喜欢

转载自blog.csdn.net/weixin_39923324/article/details/81457250