外观模式

一、定义

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用。

二、使用场景

为一个复杂子系统提供一个简单接口。

三、UML类图

外观模式

Facade:系统对外的统一接口,系统内部系统地工作。

四、 实现

//子系统1
public class SubSystemOne {
    public void methodOne() {
        System.out.println("子系统1");
    }
}

//子系统2
public class SubSystemTwo {
    public void methodTwo() {
        System.out.println("子系统2");
    }
}

//子系统3
public class SubSystemThree {
    public void methodThree() {
        System.out.println("子系统3");
    }
}

//子系统4
public class SubSystemFour {
    public void methodFour() {
        System.out.println("子系统4");
    }
}

//外观类
public class Facade {
    SubSystemOne one;
    SubSystemTwo two;
    SubSystemThree three;
    SybSystemFour four;

    public Facade() {
        one = new SubSystemOne();
        two = new SubSystemTwo();
        three = new SubSystemThree();
        four = new SubSystemFour();
    }

    public void methodA() {
        one.methodOne();
        two.methodTwo();
        four.methodFour();
    }

    public void methodB() {
        two.methodTwo();
        three.methodThree();
    }
}

//客户端
public class Client {
    Facade facade = new Facade();
    facade.methodA();
    facade.methodB();
}

五、应用

例子:Android Context
在Android开发过程中,Context是最重要的一个类,它封装了很多重要的操作,如startActivity、sendBroadcast、bindService等,因此,Context对开发者来说是最重要的高层接口,这些接口的功能实现并不是在Context及其子类中,而是通过其他子系统来完成,例如startActivity的真正实现是通过ActivityManagerService,获取应用包相关信息则是通过PackageManagerService。Context只是做了一个高层次的统一封装。

六、总结

外观模式是一个高频率使用的设计模式,它的精髓就在于封装二字。通过一个高层次结构为用户提供统一的API接口,使得用户通过一个类就基本能够操作整个系统,这样减少了用户的使用成本,也能够提升系统的灵活性。

你可能感兴趣的:(外观模式)