外觀模式(C 實現)

2021-09-25 17:24:06 字數 2448 閱讀 5473

(本部落格旨在個人總結回顧)

外觀模式:為子系統的一組介面提供乙個一致的介面,此模式定義了乙個高層次介面,這個介面使得這一子系統更容易使用。

說明:

何時使用:

①設計初期有意識的將不同的兩個層分離。

②開發階段子系統因為不斷重構演化而變的越來越複雜。

③維護乙個遺留的大型系統時,在這個系統已經非常難以維護和擴充套件,但開發需求又不得不使用它的時候。

優點:使耦合性大大減低,上層介面比較清晰簡單。

缺點:不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適。

// stdafx.h : 標準系統包含檔案的包含檔案,

// 或是經常使用但不常更改的

// 特定於專案的包含檔案

//#pragma once

#include "targetver.h"

#include #include #include using namespace std;

// todo: 在此處引用程式需要的其他標頭檔案

subsystem1.h

#pragma once

class subsystem1

;

subsystem1.cpp

#include "stdafx.h"

#include "subsystem1.h"

subsystem1::subsystem1()

subsystem1::~subsystem1()

void subsystem1::operation1()

subsystem2.h

#pragma once

class subsystem2

;

subsystem2.cpp

#include "stdafx.h"

#include "subsystem2.h"

subsystem2::subsystem2()

subsystem2::~subsystem2()

void subsystem2::operation2()

subsystem3.h

#pragma once

class subsystem3

;

subsystem3.cpp

#include "stdafx.h"

#include "subsystem3.h"

subsystem3::subsystem3()

subsystem3::~subsystem3()

void subsystem3::operation3()

facade.h

#pragma once

#include "subsystem1.h"

#include "subsystem2.h"

#include "subsystem3.h"

class facade

;

facade.cpp

#include "stdafx.h"

#include "facade.h"

facade::facade()

: m_psubsystem1(new subsystem1())

, m_psubsystem2(new subsystem2())

, m_psubsystem3(new subsystem3())

facade::~facade()

if (null != m_psubsystem2)

if (null != m_psubsystem3)

}void facade::methodx()

void facade::methody()

呼叫**

facadepatternmemo.cpp

// facadepatternmemo.cpp : 定義控制台應用程式的入口點。

C 實現外觀模式

概述 外觀模式是結構型模式,它將複雜的子類系統抽象到同乙個介面進行管理,外界只需要通過該介面與子類系統進行互動,而不必直接與複雜的子類系統進行互動 外觀模式降低訪問複雜系統的內部子系統的複雜度,簡化客戶端與之的介面 優點 減少客戶端與系統之間的耦合度 簡化客戶端 缺點 不符合開閉原則,擴張功能需要修...

設計模式 外觀模式(C 實現)

通常某乙個操作的初始化依賴於很多步驟,我們可以把此步驟進行封裝做成乙個類 通過這個類的初始化操作中 對依賴的物件進行建立,然後返回建立此型別的指標 然後在外觀類中完成這些函式的呼叫工作 適用於 為子系統中統一一套介面,讓子系統更加容易使用。include using namespace std cl...

設計模式 外觀模式 C 實現

外觀模式 引入乙個外觀角色封裝類來簡化客戶端與各個子系統之間的互動,為複雜的子系統呼叫提供乙個統一的入口,降低子系統與客戶端的耦合度,且客戶端呼叫非常方便。如果客戶端在執行乙個功能,需要首先執行a物件,然後在執行b物件,最後執行c物件。客戶端需要一次呼叫這個三個物件,如果這個功能被呼叫的頻繁的話,每...