設計模式 外觀模式

2021-08-09 03:44:11 字數 1878 閱讀 6111

外觀模式(façade pattern)

基本概念:

外觀模式的主用工作室遮蔽實際的例項化操作,利用乙個介面類(暫且稱為介面類,是直接針對客戶的類,不是真正的ui類)來生成乙個個需要的物件。外觀模式非常像工廠模式,不同點是外觀模式的介面類中已經明確了要建立的例項物件。

什麼時候用到外觀模式:

對於使用者來說,只需通過某個介面獲得例項物件,而並不需要知道某個類的具體建立的過程。如乙個系統(system)有很多子系統(subsystem),我們使用的時候只需要知道系統如何使用和執行,而不需要知道子系統是如何建立和執行的。

舉個栗子:

舉個開汽車的例子(很多時候都是拿汽車說事,沒辦法,對汽車太感興趣了,還做了幾年的汽車電子方面的開發)。我們開汽車的時候,只需要擰一下鑰匙(或者按一下start,越來越多的一鍵啟動),此時汽車的一次啟動電動機,通過電動機帶動內燃機啟動,會啟動汽車的大燈系統,會啟動中控儀表燈,顯示當前引數,會啟動一些輔助性自檢功能,檢測有沒有關好門,有沒有系安全帶等。當然還有很多更高階的功能。

上**:

//汽車各子系統

//h#pragma once

#include

#include

#include

using namespace std;

class subsystem ;

class motor: public subsystem

~motor(){}

void start(); };

class internalcombustionengine: public subsystem

~internalcombustionengine(){}

void start(); };

class selfcheck: public subsystem

~selfcheck(){}

void start(); };

class lights: public subsystem

~lights(){}

void start(); };

//cpp

#include "subsystem.h"

subsystem::subsystem(void)

subsystem::~subsystem(void)

void motor::start()

void internalcombustionengine::start()

void selfcheck::start()

void lights::start()

//汽車系統

//h

#pragma once

#include "subsystem.h"

class carsystem ;

//cpp

#include "carsystem.h"

carsystem::carsystem(void)

carsystem::~carsystem(void)

void carsystem::start()

//測試

#include "carsystem.h"

int main()

設計模式 外觀模式

外觀模式,我的理解就是將複雜的類進行重新封裝,將簡單的介面呈現出來,降低呼叫端和實際類的耦合性。拿 大話設計模式 上邊關於 和 的例子來說。對於不入門的股民來說,交易有些過於龐大,需要學習的東西很多,如果沒整明白就進行投資,很容易賠錢的。很多剛入 的股民都賠的很慘。而買 有提出了乙個新的觀念,我們買...

設計模式 外觀模式

何為外觀模式?外觀模式 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得一子系統更加容易使用。它是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和 各子系統的演化,這種過多的耦合面臨很多變化的挑戰。uml類圖 乙個...

設計模式 外觀模式

外觀模式說白了就是為一組介面提供乙個一致的介面。例如 定義三個類a b c,每個類各定義乙個方法。class a pubic void showa cout a showa pubic void showb cout b showb pubic void showc cout c showc 定義乙...