源代码:https://gitee.com/AgentXiao/FacadePattern
要点:
1、迪米特法则
2、外观模式的核心
3、外观模式使用频率很高
一、迪米特法则(最少知识原则)
一个软件实体应当尽可能少的与其他实体发生相互作用。
假设我们需要使用计算机处理一件事情,需要涉及开机、操作、关机三件事情,对老板、经理、员工来说这三步都是不可或缺的。但是这违反了迪米特法则,老板、经理、员工都需要和三个步骤打交道。
外观模式的核心在于为系统提供统一的子接口,封装子系统的复杂性,便于客户调用。也就说,将开机、操作、关机三件事情封装在一起由某程序负责,老板、经理、员工只需要告知程序员即可完成三个步骤。
在该例子中,三个步骤只是简单地定义为方法,我们可以将其类比为一个类,如果不适用外观模式,客户就需要和这三个类打交道,使用外观模式之后只需要和一个类打交道。
二、实现
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、测试结果
三、总结
使用频率很高。哪里都会遇到。各种技术和框架中,都有外观模式的使用。如:JDBC封装后的,commons提供的DBUtils类。