常用設計模式之門面模式
門面模式也可以叫做外觀模式
為子系統或者模塊中的一組接口提供一個一致的訪問方式,此模式定義了一個高層接口,這個接口使得各個子系統/模塊中的功能
更加容易使用。
實際應用中,我們在對付一些老舊的代碼或者即便不是老舊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();
}
}
//測試類
public class Test {
public static void main(String[] args) {
Facade f = new Facade();
f.start();
f.run();
f.end();
f.service();
}
}
Facade是我們的外觀類/門面類,用戶可以通過這個類使用到系統中不同模塊中的不同方法,同時也對用戶隱藏了系統中對這些功能的實現細節。給用戶提供了一個統一的訪問方式。
常用設計模式之門面模式