2010-02-18 103 views

回答

11

facade pattern是更大,可能更復雜的代碼庫的簡化接口。代碼庫可以是單個類,或更多。門面只是給你一個簡單的界面。

Abstraction用於表示一個概念,但不被綁定到任何特定的實例。 (即:抽象類)。這並不意味着簡化(就像門面模式那樣),而是建立一個'通用'接口或表示。

3

Facade是一個特定的設計模式,意味着隱藏一個封裝/模塊內部的東西從它的客戶端在一個定義良好的接口後面。它通常隱藏一個常見的接口/類,因此它的名字。

「抽象」是一個通用術語,意思是隱藏來自外部世界的具體細節。

所以這兩個是不可互換的術語。

1

門面是一個非常具體的GoF設計模式。本質上,它是關於從應用程序的主體中隱藏過度複雜的功能。

抽象是一個更隱晦的術語,涉及隱藏其客戶端的服務功能。

1

對我來說,抽象意味着採取事物集合的共同部分,並從中創建一個基礎事物,然後集合可以在其上繪製,就像父類一樣。

立面是一張臉(字面上講),所以他們類比的基類不完全持有。外觀更像是一個界面,所以它不必與使用它的東西相關聯。我覺得它更像一個面具。例如,我的班級將有一個「一次性」面具。

所以在我看來,不同之處在於抽象模式允許構建層次結構,其中外觀模式允許類看起來相似。