1. 程式人生 > >常用設計模式之門面模式

常用設計模式之門面模式

facade int 子模塊 外觀模式 code 原來 外觀 設計模式 同方

門面模式也可以叫做外觀模式
為子系統或者模塊中的一組接口提供一個一致的訪問方式,此模式定義了一個高層接口,這個接口使得各個子系統/模塊中的功能
更加容易使用。
實際應用中,我們在對付一些老舊的代碼或者即便不是老舊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是我們的外觀類/門面類,用戶可以通過這個類使用到系統中不同模塊中的不同方法,同時也對用戶隱藏了系統中對這些功能的實現細節。給用戶提供了一個統一的訪問方式。

常用設計模式之門面模式