设计模式之外观模式

80 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

前言

在前几篇章中我们讲了结构型模式的几个模式,现在我们大概回顾一下之前所学的内容,首先讲到了适配器,适配器允许你创建一个中间层类, 其可作为代码与遗留类、 第三方类或提供怪异接口的类之间的转换器。怪异就体现在,我这辆车他就要运行在火车轨道上面。

本章我们讲述外观模式,外观模式也被称为门面模式。门面也是每个人家中的大门,那么关上门就好比在他之前封装了,外面的用户看不到里面的内容,毕竟你门关着的其实也就代表着你不关心后面的内容,也就是实现,只通过门面来进行交流。

外观模式业务场景

上面说的可能有点绕,现在使用案例来带大家深入了解一下。外观模式的主要业务场景是的对其他的依赖包进行一个统一封装,如果引入的依赖直接在系统中使用,你会造成的系统代码的不稳定性与耦合度过高,不稳定性体现在如果第三方依赖有改动,那将会影响到我们的软件系。

外观模式代码

这里采用3个子系统来进行演示

package designmode.外观模式;

/**
 * <p>
 *
 * </p>
 *
 * @author MouthMouth
 * @since 2022/10/22
 */
public class Test {

    public static void main(String[] args) {
        Face face = new Face();

        face.excuteOneTwo();
    }

}
package designmode.外观模式;

/**
 * <p>
 *
 * </p>
 *
 * @author MouthMouth
 * @since 2022/10/22
 */
public class Face {


    SubSystemOne subSystemOne;

    SubSystemTwo subSystemTwo;

    SubSystemThree subSystemThree;

//主要去执行的方法,扩展face类来达到解耦
    public void excuteOneTwo(){
        subSystemOne.excute();
        subSystemTwo.excute();
    }


}
package designmode.外观模式;

/**
 * <p>
 *
 * </p>
 *
 * @author MouthMouth
 * @since 2022/10/22
 */
public class SubSystemOne {

    void excute(){
        System.out.println("one");
    }

}
package designmode.外观模式;

/**
 * <p>
 *
 * </p>
 *
 * @author MouthMouth
 * @since 2022/10/22
 */
public class SubSystemThree {
    void excute(){
        System.out.println("three");
    }
}
package designmode.外观模式;

/**
 * <p>
 *
 * </p>
 *
 * @author MouthMouth
 * @since 2022/10/22
 */
public class SubSystemTwo {
    void excute(){
        System.out.println("two");
    }
}