外观模式(Facade)

前提

        先要假设一个情景,当然不一定准确。一个地主想吃一个菜,他首先要叫佣人去买菜,然后叫保姆洗菜,最后叫厨师做菜。这样他才能吃到菜。

package demo.facade;

/**
 * 佣人
 * @author Martin
 * create by 2013-6-7
 * update by 2013-6-7
 */

public class Servant {

    public void bugVegetables() {
        System.out.println("蔬菜买好了。。");
    }
}

package demo.facade;

/**
 * 保姆
 * @author Martin
 * create by 2013-6-7
 * update by 2013-6-7
 */

public class Nanny {

    public void washVegetables() {
        System.out.println("蔬菜洗好了。。");
    }
}
package demo.facade;

/**
 * 厨师
 * @author Martin
 * create by 2013-6-7
 * update by 2013-6-7
 */

public class Cook {

    public void cookVegetables() {
        System.out.println("蔬菜烧好了。。");
    }
}

最后就是地主要分别叫他们干事了。

package demo.facade;

/**
 * 地主
 * @author Martin
 * create by 2013-6-7
 * update by 2013-6-7
 */

public class Landload {

    public static void main(String[] args) {
        Servant servant = new Servant();
        System.out.print("佣人说:");
        servant.bugVegetables();
        
        Nanny nanny = new Nanny();
        System.out.print("保姆说:");
        nanny.washVegetables();
        
        Cook cook = new Cook();
        System.out.print("厨师说:");
        cook.cookVegetables();
        
        System.out.println("地主吃到菜了。。");
    }
}

输出结果

佣人说:蔬菜买好了。。
保姆说:蔬菜洗好了。。
厨师说:蔬菜烧好了。。
地主吃到菜了。。

问题

        一段时间后,地主觉得不太对劲。他要吃一个菜,需要监督的人太多了。他就想,如果我想吃一个菜,然后就有一个人把我想吃的菜送来就好了。于是地主就顾了一个管家。然后地主跟管家说,做一个菜给我吃。

package demo.facade;

/**
 * 地主
 * @author Martin
 * create by 2013-6-7
 * update by 2013-6-7
 */

public class Landload {

    public static void main(String[] args) {
        Steward steward = new Steward();//管家
        steward.createFood();
        
        System.out.println("地主吃到菜了。。");
    }
}
package demo.facade;
/**
 * 管家
 * @author Martin
 * create by 2013-6-7
 * update by 2013-6-7
 */
public class Steward {
    public void createFood() {
        Servant servant = new Servant();
        System.out.print("佣人说:");
        servant.bugVegetables();
        
        Nanny nanny = new Nanny();
        System.out.print("保姆说:");
        nanny.washVegetables();
        
        Cook cook = new Cook();
        System.out.print("厨师说:");
        cook.cookVegetables();
    }
}

        哈哈,地方很高兴。因为他只要告诉管家,他想吃菜就有菜吃了。至于管家怎么监督工人和工人劳动的顺序,地主不用管。 在这里,管家就是一个外观模式。

好处

        1、减少系统交互

                地主本来需要很佣人、保姆、厨师交互,但现在只需要和管家交互就可以了。

        2、不需要知道模块的顺寻

                地主本来需要知道先要佣人买菜,保姆洗菜,厨师做菜。但现在只需要和管家说一下,至于是先洗菜还是先买菜,地主根本不需要知道。

类图


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值