Facade Pattern外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

举个例子,比如我们最习以为常吃饭,如果是自己做的话,那么需要经历买菜、洗菜、切菜、炒菜、吃、善后工作等,这几个顺序是肯定不能乱的,而且缺一不可。刚上了一天的班想吃个饭还要这么麻烦,想想就累。那么怎么解决呢?简单的做法就是就是饭店吃饭,在饭店吃饭我们只需要告诉厨师我们想吃什么,然后那些复杂的工序就让他去做,我们就负责吃就好了。

一、创建一个烹饪的接口

public interface Cook {
    // 买菜
    public void buyVegetables(String vegetables);
    // 洗菜
    public void washVegetables();
    // 烹饪(口味)
    public void cookVegetables(String flavour);
    // 吃
    public void eat();
}

二、烹饪的具体实现

public CookImpl implements interface Cook {
    // 买菜
    public void buyVegetables(String vegetables){
        System.out.println("去菜市场买了"+ vegetables);
    }
    // 洗菜
    public void washVegetables(){
         System.out.println("洗菜");
    }
    // 烹饪(口味)
    public void cookVegetables(String flavour){
        System.out.println("开始做菜,烧成"+flavour);
    }
    // 吃
    public void eat(){
        System.out.println("可以吃了!");
    }
}

三、饭店实现

public class Restaurant {
    Cook cook = new CookImpl();
    public void cook(String vegetables,String falvour){
        cook.buyVegetables(vegetables);
        cook.washVegetables();
        cook.cookVegetables(falvour);
        cook.eat();
    }
}

四、测试,相当于我们到饭店去

public class Client (){
    public static void main(String[] args){
        Restaurant res = new Restaurant();
        String vegetables = "花菜";
        String flavour = "麻辣味";
        res.cook(vegetables,flavour);
    }
}

通过这四步,我们就能够很明显的感到简化了很多的流程,只需要告诉饭店我们要什么?有什么要求? 然后就坐等吃饭就好了,这后面所有复杂的重复的工作 都由饭店去做。因为不管是谁来吃饭,无外乎吃什么 什么味,而买菜之类的重复性的工作就不要我们亲自去做了。把复杂的逻辑隐藏起来 给提供给我们必要的接口,这算是外观模式的根本了吧。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值