外觀模式,又叫門面模式
- 外部對子系統(tǒng)的通信必須要有一個統(tǒng)一的門面對象進行.
- 一個復雜系統(tǒng)可以有幾個門面
- 滿足迪米特法則(一個類和盡量少的類產(chǎn)生關聯(lián))
什么時候用門面模式呢?
當要和外圍系統(tǒng)交互的時候,我們一般只暴露最后的功能,而不把怎么實現(xiàn)的各個細節(jié)相關的類都扔出去.這樣子系統(tǒng)的內部結構可以隨意變化而不影響其他系統(tǒng).和現(xiàn)在微服務思想差不多.都是通過API調用.service as function...
示意圖:
image.png
代碼示例:
package com.byedbl.facade;
/**
* <pre>
* 門面模式
*
* 比如我現(xiàn)在想建一個房子,大家知道建房子很復雜,要砌墻,造門,裝修等等等....
* 如果不用門面模式,那我們要對整個的創(chuàng)建過程很熟悉,有了門面模式之后就很簡單了
* 門面類提供方法叫建房子createRoom,我直接調用就可以啦,完全不用管里面具體要干什么
*
* 利用門面模式,我們可以大大減少外圍系統(tǒng)和其他子系統(tǒng)的各種復雜交互
* @author : zengzhijun
* @date : 2018/5/24 10:03
**/
class Wall {
public Wall() {
System.out.println("Create a wall !");
}
}
class Door {
public Door() {
System.out.println("Create a door !");
}
}
class FacadeRoom {
public void createRoom() {
Wall wall1 = new Wall();
Wall wall2 = new Wall();
Wall wall3 = new Wall();
Wall wall4 = new Wall();
Door door = new Door();
}
}
public class Test {
public static void main(String[] args) {
FacadeRoom room = new FacadeRoom();
room.createRoom();
}
}