定义:提供了一个统一接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用
最少知识原则:只和你的密友谈话。
解释:不要让太多的类耦合在一起,免得修改系统中一部分,会影响到其它部分。如果许多类之间相互依赖,那么这个系统就会变得易碎。
例子:
用户在键盘上点击开机键,然后加载CPU,内存,硬盘驱动等信息,但是,客户只点了开机键,其它的执行内容对于客户而言是透明的。流程图如下:
代码:
1. CPU类
/**
*
* @Description:
* CPU类
* @author king
* @version 1.0
*/
public class Cpu {
public void execute(){
System.out.println("CPU正在启动.....");
}
}
2. 内存类
package com.myplay.facade;
/**
*
* @Description: 内存类
* @author king
* @version 1.0
*/
public class Memeory {
public void execute() {
System.out.println("内存正在启动.....");
}
}
3. 硬盘驱动类
/**
*
* @Description:
* 硬盘驱动类
* @author king
* @version 1.0
*/
public class HardDriver {
//执行的方法
public void execute() {
System.out.println("硬盘驱动正在加载.....");
}
}
4. 键盘类
/**
*
* @Description:
* 键盘类
* @author king
* @version 1.0
*/
public class KeyBorad {
public void clickButton(String command){
if("start".equals(command)){
new Cpu().execute();
new Memeory().execute();
new HardDriver().execute();
}
}
}
5.客户类
/**
*
* @Description:
* 客户类
* @author king
* @version 1.0
*/
public class Client {
private KeyBorad keyBorad = new KeyBorad();
public void start(){
keyBorad.clickButton("start");
}
}
6. 运行类:
/**
*
* @Description:
* 运行类
* @author king
* @version 1.0
*/
public class Run {
public static void main(String[] args) {
Client client = new Client();
client.start();
}
}
7.运行结果:
CPU正在启动.....
内存正在启动.....
硬盘驱动正在加载.....
以上是我对外观模式的理解。主要就是类的封装。
另,推广一下上班菜鸟技术群:207974203