门面模式(Facade)

1 概念

1、定义

  • 定义一个高层接口,为子系统中的一组接口提供一个一致的接口,使得子系统更加容易使用。

图片说明

2、应用场景

  • 想要将子系统组织成层时,使用Facade。

3、优点

  • 简化客户端的调用。

2、实现

package com.xianhuii.designpattern;

import java.lang.invoke.VarHandle;

public class Facade {
    SubSystem1 subSystem1 = new SubSystem1();
    SubSystem2 subSystem2 = new SubSystem2();
    SubSystem3 subSystem3 = new SubSystem3();

    public void doSomething() {
        subSystem1.method1();
        subSystem2.method2();
        subSystem3.method3();
    }
}

class Client1 {
    //    SubSystem1 subSystem1 = new SubSystem1();
//    SubSystem2 subSystem2 = new SubSystem2();
//    SubSystem3 subSystem3 = new SubSystem3();
//    public void doSomething1() {
//        subSystem1.method1();
//        subSystem2.method2();
//        subSystem3.method3();
//    }
    Facade facade = new Facade();

    public void doSomething1() {
        facade.doSomething();
    }
}

class Client2 {
    //    SubSystem1 subSystem1 = new SubSystem1();
//    SubSystem2 subSystem2 = new SubSystem2();
//    SubSystem3 subSystem3 = new SubSystem3();
//    public void doSomething2() {
//        subSystem1.method1();
//        subSystem2.method2();
//        subSystem3.method3();
//    }
    Facade facade = new Facade();

    public void doSomething2() {
        facade.doSomething();
    }
}

class SubSystem1 {
    public void method1() {
        System.out.println("SubSystem1.method1()");
    }
}

class SubSystem2 {
    public void method2() {
        System.out.println("SubSystem2.method2()");
    }
}

class SubSystem3 {
    public void method3() {
        System.out.println("SubSystem3.method3()");
    }
}