外观模式

外观模式即为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。

外观模式示例

下面代码我们实现一个简单的外观模式。

SubSystemA.java

public class SubSystemA {
    public void methodA() {
        System.out.println("A-A");
    }

    public void methodB() {
        System.out.println("A-B");
    }
}

SubSystemB.java

public class SubSystemB {
    public void methodA() {
        System.out.println("B-A");
    }

    public void methodB() {
        System.out.println("B-B");
    }
}

Facade.java

public class Facade {
    private SubSystemA subSystemA = new SubSystemA();
    private SubSystemB subSystemB = new SubSystemB();

    public void methodA() {
        subSystemA.methodA();
        subSystemB.methodA();
    }

    public void methodB() {
        subSystemA.methodB();
        subSystemB.methodB();
    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();
    }
}

上述代码非常简单,Facade封装了两个子系统的调用,用户只需要了解Facade就行了。实际上我们写代码时,很多情况下都使用了这种结构,只是没有意识到这是一种设计模式而已。

外观模式的使用场景

实际上我们天天都在使用外观模式,例如:编写Web应用时,Service层接口其实就是Facade,Dao层是一组子系统,Service对这些子系统根据业务需求进行调用。层与层之间实现了解耦,这使得开发阶段的分工比较明确,后期维护时,子系统越来越复杂,但由于实现了松耦合,并不会影响上层结构。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap