門面模式也能夠叫作外觀模式
爲子系統或者模塊中的一組接口提供一個一致的訪問方式,此模式定義了一個高層接口,這個接口使得各個子系統/模塊中的功能
更加容易使用。
實際應用中,咱們在對付一些老舊的代碼或者即使不是老舊code,但涉及多個子系統時,除了重寫所有代碼,咱們還可能採用這
樣一種策略:從新進行類的設計,將原來分散在源碼中的類/結構及方法從新組合,造成新的、統一的接口,供上層應用使用,同
時也隱藏了子系統或者子模塊中功能實現的複雜性
例子:
//模塊A中的類
public class ServiceA {
public void start(){
System.out.println("模塊A中的start方法");
}
}
//模塊B中的類
public class ServiceB {
public void run(){
System.out.println("模塊B中的run方法");
}
}測試
//模塊C中的類
public class ServiceC {
public void end(){
System.out.println("模塊C中的end方法");
}
}設計
//外觀類/門面類
public class Facade {
private ServiceA a;
private ServiceB b;
private ServiceC c;
public Facade() {
a = new ServiceA();
b = new ServiceB();
c = new ServiceC();
}
public void start(){
a.start();
}
public void run(){
b.run();
}
public void end(){
c.end();
}
public void service(){
a.start();
b.run();
c.end();
}
}code
//測試類
public class Test {
public static void main(String[] args) {
Facade f = new Facade();
f.start();
f.run();
f.end();接口
f.service();
}
} 源碼
Facade是咱們的外觀類/門面類,用戶能夠經過這個類使用到系統中不一樣模塊中的不一樣方法,同時也對用戶隱藏了系統中對這些功能的實現細節。給用戶提供了一個統一的訪問方式。class