9 外觀模式

2021-10-23 08:35:09 字數 1086 閱讀 6090

**外觀模式是隱藏了系統的複雜性,能夠為子系統中的一組介面提供乙個統一的介面。**客戶在使用系統時不必和子系統打交道了,降低了客戶和子系統間的耦合。

角色組成:

1、門面角色(facade):這是外觀模式的核心。它被客戶角色呼叫,因此它熟悉子系統的功能。它內部根據客戶角色已有的需求預定了幾種功能組合。

2、子系統角色(systema、systemb、systemc):實現了子系統的功能。對子系統角色來說,facade角色與客戶角色一樣,是未知的,它沒有任何facade角色的資訊和鏈結。

3、客戶角色(client):呼叫facade角色來完成要得到的功能。

class

systema

}class

systemb

}class

systemc

}public

class

facade

public

void

use()}

class

client

}

以上場景就是乙個門面模式的例子,客戶端直接使用門面類去使用三個系統,而不是乙個乙個的「new」,不關心具體實現。

優點:

1、對客戶端遮蔽了子系統元件,減少了客戶端處理的物件數量,也減少了客戶端的**量。

2、實現了客戶端和子系統的鬆散耦合,使得子系統個變化不會影響到呼叫它的客戶端,只需要改變外觀類即可。

3、乙個子系統的變化不會影響到另乙個子系統,子系統內部變化也不會影響到外觀物件。

缺點:

1、不能很好地限制客戶端直接使用子系統類,如果對客戶端訪問子系統類做太多的限制則減少了可變性和靈活性。

2、如果設計不當,增加新的子系統可能需要修改外觀類的源**,違背了開閉原則。

適用場景:

設計模式9 外觀模式

將類與類之家的依賴關係放在乙個facade類中,降低了類類之間的耦合度,該模式中沒有涉及到介面 實現類1 public class cpu public void shutdown 實現類2 public class memory public void shutdown 實現類3 public c...

設計模式 外觀模式(9)

一 定義 外觀模式為子系統中的一組介面提供乙個一致的介面,其實就是提供乙個高層介面,方便別人的呼叫。二 框架運用 spring jdbc中的外觀模式 org.springframework.jdbc.support.jdbcutils mybatis中的外觀模式 org.apache.ibatis....

設計模式 9 外觀模式

比如開一台裝置需要按順序給顯示器通電 亮燈 發出聲音。在使用外觀模式前,客戶端直接呼叫通電 亮燈 發出聲音。在這樣的情況下,後續如果流程發生變化,比如不需要發出聲音或聲音需要在亮燈之前,就需要修改客戶端的 如果客戶端多處呼叫,就需要修改多處。public class subsystemone pub...