JS 設計模式 十一(外觀模式)

weixin_34253539發表於2016-05-23

外觀模式

為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的介面。降低訪問複雜系統的內部子系統時的複雜度。在客戶端和複雜系統之間再加一層,將呼叫順序、依賴關係等處理好。

例項

模擬電腦啟動,假設電腦啟動順序:啟動CPU,啟動記憶體,啟動硬碟,載入資料等。

程式碼

// 外觀模式     
function CPU() {
  this.startup = function () {
    console.log("啟動CPU");
  };
}
function Memory() {
  this.startup = function () {
    console.log("啟動Memory");
  };
}
function Disk() {
  this.startup = function () {
    console.log("啟動Disk");
  };
}
function Computer() {
  var _cpu, _memory, _disk;
  _cpu = new CPU();
  _memory = new Memory();
  _disk = new Disk();
  this.start = function () {
    _cpu.startup();
    _memory.startup();
    _disk.startup();
  }
}

computer = new Computer();
computer.start();

外觀模式優點

1.減少系統相互依賴。
2.提高靈活性。
2.提高了安全性。

適用場景:

1.為複雜的模組或子系統提供外界訪問的模組。
2.客戶程式與抽象類的實現部分之間存在著很大的依賴性。引入facade 將這個子系統與客戶以及其他的子系統分離,可以提高子系統的獨立性和可移植性。

相關文章