23种设计模式之9.外观模式

127 阅读2分钟

外观模式就是对一系列复杂的接口提供一个统一的接口,大大降低使用者使用的复杂度,使用者不用关注整个子系统的具体细节。例如你想要开发一款软件,那你就需要UI、产品、开发、测试一系列步骤,这对普通人来说是很困难的,这时软件开发公司就站了出来,你只需告诉软件开发公司你要的产品就可以了。在这个例子中UI、产品、开发、测试就是一系列复杂的接口,软件开发公司是一个统一的接口,你只需要调用统一的接口就能完成你想要的功能。

下面用代码实现外观模式的原理:

首先开发一个软件有很多子系统,UI、产品、开发、测试:

class Product {
    public void analysis(){
        System.out.println("产品开始分析需求");
    }
}

class UI {
    public void creatUi(){
        System.out.println("UI开始制作");
    }
}

class Code {
    public void code(){
        System.out.println("开发开始编码");
    }
}

class Test {
    public void test(){
        System.out.println("测试开始测试");
    }
}

此时有一个软件公司帮你做了整合:

public class Company {
    private Product product = new Product();
    private UI ui = new UI();
    private Code code = new Code();
    private Test test = new Test();

    public void development(){
        product.analysis();
        ui.creatUi();
        code.code();
        test.test();
        System.out.println("开发完成");
    }

    public static void main(String[] args) {
        Company company = new Company();
        company.development();
    }
}

此时使用者想要开发软件只需让软件公司开发就行了,不必关心开发的细节。

结果如下图所示,只通过有一个接口就完成了整个的开发:

image.png

外观模式优点:

  1. 屏蔽细节,使用简单。
  2. 细节已经确定好,使用者关注不到细节,提高了安全性。
  3. 降低了子系统与使用者之间的耦合度。

外观模式缺点:

  1. 不符合开闭原则,修改可能需要修改源代码。