結構型模式之外觀模式

2022-08-22 03:12:14 字數 1723 閱讀 2544

1、外觀模式產生的原因:

在軟體開發過程中,程式一般會越做越大,而這樣系統中類及子系統之間的影響會使彼此間的關係變得錯綜複雜即過多的耦合,這就導致了隨著系統中類或子系統發生變化,與之相關聯的子系統或類就需要發生變化。

2、外觀模式的定義

外觀模式(facade pattern):就是為子系統中的一組介面提供乙個統一的高層介面。這一介面使得子系統更加容易使用。

更簡單的理解:

通過外觀的包裝,使客戶程式只能看到外觀物件而不會看到具體細節物件。從而降低了系統的複雜度,並提高了程式的可維護性。如同黑匣子。

舉例說明:

為了使用方便,乙個電源總開關可以控制兩盞燈、一台空調和一台空調的啟動和關閉。通過該電源總開關可以同時控制上述所有電器裝置,使用外觀模式設計該系統。

3、為什麼要使用外觀模式

沒有使用外觀模式的時候如下圖:

使用外觀模式如下圖:

從上面可以看到:使用外觀模式之後對程式的易用性和可維護性都是很大的提高。

引入外觀模式之後,使用者只需要直接與外觀角色互動,使用者與子系統之間的複雜關係由外觀角色來實現,將複雜系統的內部子系統與客戶程式之間的依賴解耦,降低了系統的耦合度。

4、外觀模式的結構

外觀模式包含兩個角色:

1、facademic:外觀角色

外觀角色是在客戶端直接呼叫的角色

2、subsystem:子系統角色

在軟體系統中可以同時有乙個或者多個子系統角色

5、外觀模式分析

根據「單一職責原則」,在軟體中將乙個系統劃分為若干個子系統有利於降低整個系統的複雜性。引入乙個外觀物件,為子系統的訪問提供了乙個簡單而單一的入口。

外觀模式也是「迪公尺特法則」的體現,通過引入乙個新的外觀類可以降低原有系的複雜度,同時降低客戶類與子類系統類的耦合度

外觀模式的目的在於降低系統的複雜程度

外觀模式很大程度上提高了客戶端使用的便捷性,使得客戶端無須關係子系統的工作細節,通過外觀角色即可呼叫相關功能

6、**分析

這裡我給出了四個subsystem子系統,分別為a、b、c、d

public class facade 

//提供給外部訪問的方法

public void methoda()

public void methodb()

public void methodc()

public void methodd()

}

這裡為了不過多贅述,只放上a的**,其餘子系統類似。

public

class

subsystema

}

public

class

client

}

結構型模式之外觀模式

外觀模式 facade 外觀模式是為了解決類與類之家的依賴關係的,像spring 一樣,可以將類和類之間的關係配置到配置 檔案中,而外觀模式就是將他們的關係放在乙個facade 類中,降低了類類之間的耦合度,該模式中沒 有涉及到介面,看下類圖 我們以乙個計算機的啟動過程為例 我們先看下實現類 pub...

結構型模式之外觀模式實現

外觀模式為一組具有類似功能的類群,比如類庫 子系統等等,提供乙個一致的簡單的介面。這個一致的介面被稱作外觀。facade 為呼叫方,定義簡單的呼叫介面 clients 呼叫者。通過facade介面呼叫提供某功能的內部類群 packages 功能提供者。指提供功能的類群 模組或子系統 適用於 為子系統...

Java設計模式 結構型模式之外觀模式

一 前言 今天我們一起來學習外觀模式。外觀模式為使用者提供乙個統一的facade高層介面,我們的使用者面對僅僅就是facade這個介面,這樣使用者使用就顯得簡單,而facde下的子介面也容易擴充套件。自我感覺有點像我們生活中那些一鍵搞定的那種傻瓜式的操作模式。二 外觀模式 概述 隱藏系統的複雜性,並...