【结构型模式】外观模式

源代码:https://gitee.com/AgentXiao/FacadePattern
要点:
1、迪米特法则
2、外观模式的核心
3、外观模式使用频率很高

一、迪米特法则(最少知识原则)

一个软件实体应当尽可能少的与其他实体发生相互作用。

假设我们需要使用计算机处理一件事情,需要涉及开机、操作、关机三件事情,对老板、经理、员工来说这三步都是不可或缺的。但是这违反了迪米特法则,老板、经理、员工都需要和三个步骤打交道。

外观模式的核心在于为系统提供统一的子接口,封装子系统的复杂性,便于客户调用。也就说,将开机、操作、关机三件事情封装在一起由某程序负责,老板、经理、员工只需要告知程序员即可完成三个步骤。

【结构型模式】外观模式_第1张图片
使用外观模式.png

在该例子中,三个步骤只是简单地定义为方法,我们可以将其类比为一个类,如果不适用外观模式,客户就需要和这三个类打交道,使用外观模式之后只需要和一个类打交道。

二、实现

1、三个步骤

/**
 * @ClassName StartCom
 * @Description 开启电脑
 * @Author xwd
 * @Date 2018/10/25 11:06
 */
public class StartCom {
    public void startComputer(){
        System.out.println("开启电脑");
    }
}
/**
 * @ClassName SolveQues
 * @Description 解决问题
 * @Author xwd
 * @Date 2018/10/25 11:07
 */
public class SolveQues {
    public void solveQuestion(){
        System.out.println("解决问题");
    }
}

/**
 * @ClassName ShutDownCom
 * @Description 关闭电脑
 * @Author xwd
 * @Date 2018/10/25 11:07
 */
public class ShutDownCom {
    public void shutdownComputer(){
        System.out.println("关闭电脑");
    }
}

2、外观接口

/**
 * @ClassName Programer
 * @Description 程序员
 * @Author xwd
 * @Date 2018/10/25 11:06
 */
public class Programer {
    public void solveTask(){
        StartCom sc = new StartCom();
        sc.startComputer();
        SolveQues so = new SolveQues();
        so.solveQuestion();
        ShutDownCom sd = new ShutDownCom();
        sd.shutdownComputer();
    }
}

3、测试

/**
 * @ClassName Client
 * @Description 测试外观模式
 * @Author xwd
 * @Date 2018/10/25 11:10
 */
public class Client {
    public static void main(String[] args) {
        Programer programer = new Programer();
        programer.solveTask();
    }
}

4、测试结果

【结构型模式】外观模式_第2张图片
测试结果

三、总结

使用频率很高。哪里都会遇到。各种技术和框架中,都有外观模式的使用。如:JDBC封装后的,commons提供的DBUtils类。

你可能感兴趣的:(【结构型模式】外观模式)