1. 程式人生 > >Facade(外觀)模式

Facade(外觀)模式

  外觀模式是類結構型設計模式之一,描述的是一組具有類似功能的類群。

案例:輸入系統中有多個輸入子系統:鍵盤、觸控式螢幕、滑鼠等,它們都要為上層應用程式提供x、y座標。

  若使用者程式碼直接操作這些輸入子系統:

class SubMouse
{
public:
    void get_mouse_location() { cout << "Mouse:\tx = 240, y = 660" << endl; }
};

class SubTouch
{
public:
    void get_touch_location() { cout << "Touch:\tx
= 445, y = 636" << endl; } }; class SubKey { public: void get_key_location() { cout << "Key:\tx = 635, y = 754" << endl; } }; int main(void) { SubMouse* mouse = new SubMouse; SubTouch* touch = new SubTouch; SubKey* key = new SubKey; mouse->get_mouse_location(); touch->get_touch_location(); key->get_key_location(); delete mouse; delete touch; delete key; return 0; }

  顯然,使用者程式碼和輸入子系統的耦合性太強,為使它們解耦合,引入了上述的外觀模式,使得子系統統一介面,讓子系統更加容易呼叫。
  UML圖:
這裡寫圖片描述
  Facade:為使用者程式碼呼叫簡單而定義的呼叫介面;
  SubSystem*:功能的類群(模組或子系統),即功能提供者。

class SubMouse
{
public:
    void get_mouse_location() { cout << "Mouse:\tx = 240, y = 660" << endl; }
};

class SubTouch
{
public:
    void get_touch_location() {
cout << "Touch:\tx = 445, y = 636" << endl; } }; class SubKey { public: void get_key_location() { cout << "Key:\tx = 635, y = 754" << endl; } }; int main(void) { SubMouse* mouse = new SubMouse; SubTouch* touch = new SubTouch; SubKey* key = new SubKey; mouse->get_mouse_location(); touch->get_touch_location(); key->get_key_location(); delete mouse; delete touch; delete key; return 0; }

  編譯執行,和前面的一致:
這裡寫圖片描述

相關推薦

Facade外觀模式

  外觀模式是類結構型設計模式之一,描述的是一組具有類似功能的類群。 案例:輸入系統中有多個輸入子系統:鍵盤、觸控式螢幕、滑鼠等,它們都要為上層應用程式提供x、y座標。   若使用者程式碼直

介面型模式Facade外觀模式

1.如果你期望為一組類提供一個簡單的介面,可使用Facade(外觀)模式。 2.舉例: 2.1uml模型 2.2原始碼 //模擬第一個操作:開啟第一個抽屜 public class DrawerOne { public void open(

java23種設計模式-門面外觀模式

定義 外觀模式為子系統的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。 UML 角色 子系統(SubSystem): 表示一個系統的子系統或者模組 門面(Facade): 客戶端通過門面間接控制子系統。門面遮蔽

設計模式-外觀門面模式

文章目錄 外觀模式介紹 使用場景 程式碼例項 總結 外觀模式介紹 外觀模式,也成為門面模式,它隱藏了系統的複雜性,並向客戶端提供了一個可以訪問系統的介面。 適用方要完成一個功能,需要呼叫提供方的多個介面、方法,呼叫過程複雜時,

“戲”說設計模式——外觀門面模式

首先請出今天的主人公——“黑旋風”李逵 李逵:“我是不是萌萌噠?”  一部《水滸傳》說盡了一群英雄好漢的悲歡離合!經典著作的水滸,含蓄地概括了中國各個朝代的變遷和演變,客觀地揭露了頑固的中國倫理道德,以及那些倫理道德對國人的愚弄和危害。 故事劇情 宋江酒後在潯陽樓

設計模式的征途—5.原型Prototype模式

pla width 共享 太多的 isp text 一模一樣 軟件 集合 相信大多數的人都看過《西遊記》,對孫悟空拔毛變出小猴子的故事情節應該都很熟悉。孫悟空可以用猴毛根據自己的形象復制出很多跟自己一模一樣的小猴兵出來,其實在設計模式中也有一個類似的模式,我們可以通過一個原

設計模式的征途—16.訪問者Visitor模式

lose mar rtm image 3.1 conf 系統 .get 封裝性 在患者就醫時,醫生會根據病情開具處方單,很多醫院都會存在以下這個流程:劃價人員拿到處方單之後根據藥品名稱和數量計算總價,而藥房工作人員根據藥品名稱和數量準備藥品,如下圖所示。 在軟件開發中

設計模式的征途—18.策略Strategy模式

滿足 應用 基礎 blog title pla 生成 display 多個 俗話說條條大路通羅馬,很多情況下實現某個目標地途徑都不只一條。在軟件開發中,也會時常遇到這樣的情況,實現某一個功能有多條途徑,每一條途徑都對應一種算法。此時,可以使用一種設計模式來實現靈活地選擇解決

設計模式的征途—20.備忘錄Memento模式

行為 修煉之道 mda 3.2 ima 位置 pri 捕獲 spl 相信每個人都有後悔的時候,但是人生並無後悔藥,有些錯誤一旦發生就無法再挽回,有些事一旦錯過就不會再重來,有些話一旦說出口也就不可能再收回,這就是人生。為了不讓自己後悔,我們總是需要三思而後行。這裏我們要學習

設計模式的征途—23.解釋器Interpreter模式

args 參考資料 轉載 返回 下一個 tle title 缺點 images 雖然目前計算機編程語言有好幾百種,但有時人們還是希望用一些簡單的語言來實現特定的操作,只需要向計算機輸入一個句子或文件,就能按照預定的文法規則來對句子或文件進行解釋。例如,我們想要只輸入一個加法

【設計模式】module模式&&Revealing module 揭示模式

但是 出版 參數傳遞 9.png 自然 指向 們的 private 初級 寫在前面 《head first設計模式》裏有一篇文章,是說使用模式的心智,   1、初學者"心智" :"我要為HELLO WORLD找個模式"   2、中級人員模式: "或許這裏我需要一個單件

有關模式窗體和無模式窗體的區別

最小化 調用方法 關閉 對話 一起 兩種模式 獲得 windows new   在客戶端和網頁的開發過程中,我們都會或多或少遇到過模式窗體和無(非)模式窗體(以下簡稱無模式窗體),   在傳統的Windows窗體開發過程中,對話框有兩種模式:模式窗體和無模式窗體。   模式

Java設計模式8——創建型模式之合成組合模式

span color java設計 合成 src 一致性 rdquo img spa 一、概述   定義   將對象以樹形結構組織起來,以達成“部分-整體” 的層次結構,使得客戶端對單個對象和組合對象的使用具有一致性。   簡圖    J

perl學習3模式匹配與正則表達式

.... 表達式 正則表達 pos 匹配模式 模式匹配 $2 多個 info 一:模式匹配中的特殊字符 1:  點號 .     匹配任何單個字符(換行符\n除外) 2:  反斜線 \     轉義字符,用於特殊符號前,使其失去特殊字符的作用變成普通字符 3:  +   

利用access接入模式實現同VLAN互通

同VLAN互通利用access(接入)模式實現同VLAN互通Display mac address vlan 10 查看VLAN10 MAC 地址表Display mac address aging time查看MAC地址存活時間Display vlan 查看交換機上面的VLAN以及端口對應關系Display

設計模式之裝飾Decorator模式

isp 撤銷 有一個 inf 替代 接受 需要 裝飾著模式 () 設計模式之裝飾(Decorator)模式 (一)什麽是裝飾(Decorator)模式   裝飾模式,又稱為包裝模式,它以對客戶端透明的方式擴張對象的功能,是繼承關系的替代方案之一。  裝飾模式可以在不使用創造

設計模式:裝飾器Decorator模式

讓我 分享圖片 底部 .com 一件事 輸出 PE 新的 int 設計模式:裝飾器(Decorator)模式 一、前言 裝飾器模式也是一種非常重要的模式,在Java以及程序設計中占據著重要的地位。比如Java的數據流處理,我們可能看到數據流經過不同的類的包裝和包裹,最

設計模式:訪問者Visitor模式

tlist 情況下 面向 font ati pap 書籍 技術 原理 設計模式:訪問者(Visitor)模式 一、前言 什麽叫做訪問,如果大家學過數據結構,對於這點就很清晰了,遍歷就是訪問的一般形式,單獨讀取一個元素進行相應的處理也叫作訪問,讀取到想要查看的內容+對其

設計模式:觀察者Observer模式

image 強制轉換 trace vat PE sta obs observer -a 設計模式:觀察者(Observer)模式 一、前言 觀察者模式其實最好的名稱應該是“發布訂閱”模式,和我們現在大數據之中的發布訂閱方式比較類似,但是也有區別的地方,在上一個設計模式,

設計模式:享元FlyWeight模式

例子 清理 什麽 public == lean http 變量 -- 設計模式:享元(FlyWeight)模式 一、前言 享元(FlyWeight)模式顧名思義,既是輕量級的,原因就是享元,共享元素,這裏的元素指的是對象。如何共享對象,那就是在檢測對象產生的時候,如