Coding精髓(设计模式)——门面担当之外观模式

114 阅读1分钟

一、引言

外观模式是什么,为什么有外观模式?外观模式怎么实现? 1.外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 2.目的只有一个,提供一个方法供用户调用,隐藏它的细节。

二、实现外观模式

假设你现在要在家里看电影,为了更好的体验生活,你需要做以下几个不走

  1. 开电视机
  2. 开瓶啤酒
  3. 调灯光

在外观模式的情况下,我们只需要把这三个动作交给一个类来实现,调用这个类的看电影方法即可。类图如下: 在这里插入图片描述 相当于在用户和各种设备中间加了一层:外观类,统一对电视机,啤酒,灯光进行调用。 代码如下:

//电视机
public class TV {
    public void open(){
        System.out.println("打开电视机");
    }
}

//啤酒
public class Piper {
    public void open(){
        System.out.println("打开啤酒");
    }
}

//灯光
public class Light {
    public void open(){
        System.out.println("打开灯光");
    }
}

/**
 * 外观类
 */
public class Maker {
    private TV tv=new TV();
    private Piper piper=new Piper();
    private Light light=new Light();

    public void open(){
        tv.open();
        piper.open();
        light.open();
    }
}

//Main方法
public static void main(String[] args) {
        //此时我不再调用三种设备,直接调用外观类open,即可完成看电影
        Maker maker = new Maker();
        maker.open();
    }

运行结果如下: 在这里插入图片描述

三、结束

外观模式很简单,就是在各个模块中间加一次达到隐藏系统的复杂性,但是外观模式不符合开闭原则,如果要修改程序非常麻烦,所以慎用。