Android设计模式之外观模式

2017-10-17  本文已影响0人  TangBuzhi

外观模式

1.定义:

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

2.使用场景:

3.UML图

4.详解:

外观模式是开发过程中使用频率极高的一种结构型设计模式。假如现在需要开发一个第三方SDK,一般都会使用外观模式,对外隐藏系统内部的实现细节,仅提供一个统一的接口供外部调用,这样既减低了用户使用成本,也对用户屏蔽了很多的实现细节。
下面看代码举例:

private static class SubSystemA {
        private void start() {
            System.out.println("sub system A start");
        }

        private void end() {
            System.out.println("sub system A end");
        }
    }

    private static class SubSystemB {
        private void start() {
            System.out.println("sub system B start");
        }

        private void end() {
            System.out.println("sub system B end");
        }
    }

    private static class SubSystemC {
        private void start() {
            System.out.println("sub system C start");
        }

        private void end() {
            System.out.println("sub system C end");
        }
    }

上面三个类表示整个系统的三个子系统,下面是对外统一的外观类,它持有三个子系统类的实例,并对外提供统一的接口(start/end),方便外部调用:

    public static class SystemFacade {
        private static SubSystemA subSystemA = new SubSystemA();
        private static SubSystemB subSystemB = new SubSystemB();
        private static SubSystemC subSystemC = new SubSystemC();

        private void start() {
            subSystemA.start();
            subSystemB.start();
            subSystemC.start();
        }

        private void end() {
            subSystemA.end();
            subSystemB.end();
            subSystemC.end();
        }
    }

测试代码:

public static void main(String[] args) {
        SystemFacade systemFacade = new SystemFacade();
        systemFacade.start();
        systemFacade.end();
        /**
         sub system A start
         sub system B start
         sub system C start
         sub system A end
         sub system B end
         sub system C end
         */
    }

到这里,外观模式的代码举例就结束了,从输出结果一看便知,各子系统均参与了工作,而且它们之间完全解耦,达到预期目的。

5.代码托管地址

外观模式

上一篇 下一篇

猜你喜欢

热点阅读