1. 程式人生 > >設計模式 -- 外觀模式Facade

設計模式 -- 外觀模式Facade

外觀模式:軟體工程中常用的一種軟體設計模式。它為子系統中的一組介面提供一個統一的高層介面。這一介面使得子系統更加容易使用。

適用於:

       客戶端為了避免與複雜的子系統產生耦合而導致隨著子系統的變化而變化。外觀模式就是為了簡化客戶端與子系統之間的介面。

結構如下:

子系統:需要利用的各個功能模組

Facade:提供統一的簡單介面,內部包含對子系統的包裝整合

Client:呼叫Facade介面,避免與子系統直接互動

結構圖:


小例子:計算機與人的故事

#include <iostream>
#include <memory>

using namespace std;

//外觀模式:模擬人控制電腦

//電腦內部細節:CPU
class CPU {
public:
	void freeze() { cout << "CPU is freezing" << endl; }
	void execute() { cout << "CPU is executing instruction" << endl; }
};

//電腦內部細節:記憶體Memory
class Memory {
public:
	void load() { cout << "Memory is loading" << endl; }
};

//電腦內部細節:硬碟
class HardDrive {
public:
	void read() { cout << "HardDrive is reading" << endl; }
};

//外觀類Facade: Computer
class Computer {
public:
	Computer()
		: cpu(new CPU()),
		memory(new Memory()),
		hardDrive(new HardDrive())
	{ }

	void startComputer()
	{
		cpu->freeze();
		memory->load();
		cpu->execute();
		hardDrive->read();
	}
private:
	std::shared_ptr<CPU> cpu;
	std::shared_ptr<Memory> memory;
	std::shared_ptr<HardDrive> hardDrive;
};

int main()
{
	Computer facade;
	facade.startComputer();
	return 0;
}
/*
CPU is freezing
Memory is loading
CPU is executing instruction
HardDrive is reading
 */


相關推薦

【編程思想】【設計模式】【結構模式Structural】門面模式/外觀模式Facade

pla each serve com pro rep compute source import Python版 https://github.com/faif/python-patterns/blob/master/structural/facade.py #!/

設計模式-外觀模式(facade)

基本概念 外觀模式的作用: 鬆散耦合,外觀模式鬆散了客戶端與子系統的耦合關係,讓子系統內部的模組能更容易擴充套件和維護。 簡單易用,外觀模式讓子系統更加易用,客戶端不再需要了解子系統內部的實現,也不需要跟眾多子系統內部的模組進行互動,只需要跟門面類互動就可以了。

重走Java設計模式——外觀模式Facade Pattern)

外觀模式 定義 外觀模式(Facade Pattern)隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的介面。這種型別的設計模式屬於結構型模式,它向現有的系統新增一個介面,來隱藏系統的複雜性。 這種模式涉及到一個單一的類,該類提供了客戶端請求的簡化方法和對現有系

23種設計模式-門面模式(外觀模式)Facade

1.產生背景 為什麼需要門面模式 我是一個辛苦一輩子的農民,攢了幾十年錢,現在日子好了,也想建一套屬於自己的小洋樓; 首先,我要僱一個搬磚的和一個和泥的,還要一個會砌牆的人;可是我到哪裡去找這些人,還要一個一個跟他們談價錢;不知道他們和不和得來,會不會幹一半不幹了; 哎,好

設計模式-外觀模式Facade

外觀模式又稱為門面模式,為一組類似功能的叢集,比如類庫、子系統等,提供一致的入口供client呼叫 角色和職責: 1.門面(Facade)-Computer:    外觀模式的核心。它被客戶角色呼叫,它熟悉子系統的功能。內部根據客戶角色的需求預定了幾種功能的組合 2.子系統(Pac

淺談Java設計模式——外觀模式(facade)

一、概述         為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。我們都知道類與類之間的耦合越低,那麼可複用性就越好,如果兩個類不必彼此通訊,那麼就不要讓這兩個類發生直接的相互關係,如果需要呼叫裡面的方

設計模式 --外觀模式(Facade)

什麼是外觀模式? 外觀模式(Facade),為子系統中的一組介面提供一個一致的介面,定義一個高層介面,這個介面使得這一子系統更加容易使用。 簡單點說:外觀模式是一種使用頻率非常高的結構型設計模式,它通

設計模式 -- 外觀模式Facade

外觀模式:軟體工程中常用的一種軟體設計模式。它為子系統中的一組介面提供一個統一的高層介面。這一介面使得子系統更加容易使用。 適用於:        客戶端為了避免與複雜的子系統產生耦合而導致隨著子系統的變化而變化。外觀模式就是為了簡化客戶端與子系統之間的介面。 結構如下:

23種設計模式-外觀模式(Facade Pattern)

一、 門面(Facade)模式 外部與一個子系統的通訊必須通過一個統一的門面(Facade)物件進行,這就是門面模式。 醫院的例子 用一個例子進行說明,如果把醫院作為一個子系統,按照部門職能,這個系統可以劃分為掛號、門診、劃價、化驗、收費、取藥等。看病的病人要與這些

設計模式 | 外觀模式/門面模式facade

結構 之前 有意 mina 應該 問題 pack src ack 定義: 為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。 結構:(書中圖,侵刪) 一個簡潔易用的外觀類 一個復雜的子系統 實例: 書中提到了理財

C#設計模式-外觀模式Facade Pattern)

引言 在軟體測試中,一般都是在功能測試穩定的情況下再進行UI自動化測試、或者進行效能測試。如果一個一個進行太麻煩,此時可以使用對外提供一個簡單介面,通過這個介面可以訪問內部一群介面。例如進行UI自動化測試, 那麼執行功能測試後再執行自動化測試。在軟體開發過程中,將對外提供了一個統一的介面,用來訪問子系統中的一

設計模式--外觀模式

通過 stc 我們 使用 客戶端 不同的 test ace log 例如 你到政府部門去辦事情,你需要到部門1辦事情,然後再去部門2去辦事情,後面有了一站式窗口之後,你只需要把表交給一站式窗口。一站式窗口在去部門1和部門2去辦事情,客戶不用和模塊a和b打交道 案例2:

設計模式——外觀模式

觀察者模式 訪問 交互 images 高層 觀察者 建立 我們 系統   外觀模式是軟件工程中常用的一種軟件設計模式。它為子系統中的一組接口提供一個統一的高層接口。這一接口使得子系統更加容易使用。   優點     Facade模式降低了客戶端對子系統使用的復雜性。   

設計模式-外觀模式

優點 訪問 深入 簡化 門面模式 中介 了解 模式 開閉原則 一、定義 定義:又叫門面模式,提供了一個統一的接口,用來訪問子系統中的一群接口 外觀模式定義了一個高層接口,讓子系統更容易使用 類型:結構型 二、使用場景 1、子系統越來越復雜,增加外觀模式提供簡

python設計模式-外觀模式

上一篇《python設計模式-介面卡模式》介紹瞭如何將一個類的介面轉換成另一個符合期望的介面。這一篇將要介紹需要一個為了簡化介面而改變介面的新模式-外觀模式(Facade-Pattern)。 問題 問題:如果你組裝了一套家庭影院,內含播放器、投影機、自動螢幕、立體聲音響、爆米花機等。如何設計一個遙控

大話設計模式-外觀模式

color 依賴 外觀模式 代碼 兩個 sub idt 重構 str 外觀模式 外觀模式為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。 外觀系統完美的體現了依賴倒轉原則和迪米特法則的思想,所以是非常常用的模式之一。

java設計模式--外觀模式(門面模式

簡介: 外觀模式(Facade),他隱藏了系統的複雜性,並向客戶端提供了一個可以訪問系統的介面。這種型別的設計模式屬於結構性模式。為子系統中的一組介面提供了一個統一的訪問介面,這個介面使得子系統更容易被訪問或者使用   角色:     1).

設計模式之門面模式(外觀模式)

門面模式 概念 何時使用 類圖 程式碼例項 概念 當類A和多個類互動時,並且呼叫其方法很亂時,為了降低類之間的耦合性,符合迪米特最少知識法則,專門抽出一個類,並且提供出幾個簡單明瞭的介面給A類,那麼具體的複雜方法呼叫交給此類進行管理,該類就是為門面類。 何時

Android開發之設計模式-外觀模式

外觀模式(Facade Pattern) 定義:外部與一個子系統的通訊必須通過一個統一的外觀物件進行,為子系統中的一組介面提供一個一致的介面,外觀模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。 主要解決:降低訪問複雜系統的內部子系統時的複雜度,簡化客戶端與之

C#設計模式-外觀模式

using System; using System.Collections.Generic; namespace TestCS { class Program { static void Main(string[] args) {