Quantcast
Channel: 系統分析與設計 – Kenmingの鮮思維
Viewing all articles
Browse latest Browse all 33

從紅樓夢大觀園看 Facade 模式

$
0
0

前言

《紅樓夢》作為中國古典文學的瑰寶,其豐富的故事情節和人物刻畫提供了許多值得深思的啟示。其中,「劉姥姥進大觀園」的情節,恰好可以作為 1Facade 模式的一個絕佳範例。劉姥姥通過大門進入大觀園,這個「大門」就像 Facade 模式中的統一介面,隔離了園內的繁複細節,讓訪客能以簡單的方式感受到園林的宏偉與美麗。

劉姥姥進大觀園 – 誰是 Facade?

劉姥姥剛進入賈府大觀園的場景,是《紅樓夢》中一個生動有趣的片段,充分展現了她對貴族生活的陌生和驚訝。

當劉姥姥第一次進入大觀園後,劉姥姥的目光被園中的美景和奢華的建築吸引,她對於這些富麗堂皇的佈置感到無比驚奇。她的反應既樸實又直接,常常不自覺地發出讚嘆,甚至有些手足無措。劉姥姥的這種反應不僅讓周圍的人感到有趣,也使讀者感受到她身處一個截然不同世界的真實感受。

這一場景生動地描繪了劉姥姥的純樸和對貴族生活的陌生,通過她的視角,讀者也能體會到賈府的奢華與繁華,形成強烈的對比和反差,進一步強調了社會階層的差異。

這其中,我們可以藉由觀察下圖,劉姥姥是如何 “進” 入大觀園,就可以了解 Façade 物件的作用與應用時機了。

Facade 模式範例 - 劉姥姥進大觀園

為了安全性隱私與便於管理等議題,外人要進入大觀園只能經由「大門」進入。從軟體物件導向觀點類比,劉姥姥是「Client」,大觀園是「系統」,進入是「行為」,係屬於大門所提供的操作,而大門即是擔任大觀園 (系統) 的「門面 (Façade)」物件:提供統一的入口 (entry point),它具有保護 (可以檢核 Client 能否進入的權限),以及封裝了系統內部繁雜細節的作用。

參考下圖,使用 UML 物件圖 (object diagram) 可以呈現劉姥姥、大門、大觀園內部眾多種類 (住宅、建築物、主人、婢女 … 等) 物件它們的結構關係。

Facade 核心概念

定義與目的

  • 為次系統 (sub-system) 提供了統一的介面。Façade 定義了更高層次的介面,使得次系統更易於讓外界使用。
  • Client 只透過 Façade 物件,不直接與次系統內的物件結構直接關聯,可以避免與次系統內的物件直接耦合而不容易抽換。

主要參與者

  • Facade:負責接收請求並委派給次系統內的相關類別處理。
  • Subsystem:實現具體功能的次系統或功能模組。
  • Client:透過 Facade 使用次系統功能。

Facade 模式的效果

  • 封裝複雜度:讓 Client 可以使用系統提供的服務 (功能),且不需要知道系統內部繁雜的細節。
  • 降低耦合:讓 Client 無需直接接觸次系統內部,這使得系統可以更易於維護與擴展。
  • 促進分層 (tier) 架構的隔離性:讓 展示層 (presentation tier)、應用邏輯層 (application logic tier)、資料來源層 (data source tier) 保持獨立性,而可以各自維護與擴展。

應用實例與時機

軟體系統實例

  • .NET Entity Framework 提供 DBContext 類別用以封裝資料庫存取繁雜的細節,簡化開發者對資料庫的操作。
  • 微服務 (microservices) 架構其中的 API Gateway ,為 Client 提供統一的訪問點。
  • 電子商務訂購功能的分層結構設計,應用邏輯層的服務類別用以封裝訂購邏輯以及資料存取。

應用時機

  • 系統分層架構設計:促進展示層與應用邏輯層的隔離。
  • 功能模組的封裝:為軟體元件 (components) 提供統一的訪問介面。
  • 分散式微服務架構:Client 只透過 API Gateway 所提供的 WebAPI 作為統一的存取介面。

參考 - 原文摘錄

「劉姥姥進了園,只見那一帶粉牆朱戶,綠槐夾道,真是個清幽所在。她一路看著,只覺得步步是景,處處皆奇,心裡不住的誇讚:『這樣的好地方,別說見,連聽也沒聽過。』」

「進了大門,迎面一個影壁,影壁上畫著一幅山水畫,畫中有亭台樓閣,人物樹石,極其精緻。劉姥姥看了一會兒,點頭說道:『這畫倒像真的一般。』」

「再往裡走,只見花木扶疏,泉石嶙峋,真是一步一景。劉姥姥看得目瞪口呆,嘴裡不住地說:『這才叫做世外桃源呢!』」

劉姥姥剛踏入大觀園,看到的是粉牆朱戶、綠樹成蔭的小徑,感受到一種清雅幽靜的氛圍。這段描寫突出了大觀園的與眾不同,讓劉姥姥這樣的農村婦女感到震撼,她甚至感嘆自己從未見過、聽過這樣的地方。

進入大門後,劉姥姥看到影壁上的山水畫,感到畫中景物栩栩如生,讚歎畫工精妙。這展現了大觀園內的藝術氛圍,也反映出劉姥姥對精緻文化的陌生與好奇。

繼續深入園中,劉姥姥被花草樹木和假山流水的景致所吸引,感慨這才是真正的「世外桃源」。這裡的描寫不僅展現了園林設計的巧妙,也通過劉姥姥的視角,讓讀者感受到大觀園的美輪美奐。

  1. 源自於法文 [ fə'sɑd ],原意為建築物的正面、外觀。軟體領域可譯為門面,隱含有封裝設計的意味。 ↩︎

Viewing all articles
Browse latest Browse all 33

Trending Articles