設計模式之Facade

2021-06-16 02:07:07 字數 1732 閱讀 7702

facade

模式也叫外觀模式,是由gof提出的23種設計模式中的一種。

facade

模式為一組具有類似功能的類群,比如類庫,子系統等等,提供乙個一致的簡單的介面

。這個一致的簡單的介面被稱作facade。

本文介紹設計模式中的外觀(facade)模式的概念,用法,以及實際應用中怎麼樣使用facade模式進行開發。

facade

模式的概念

facade

模式為一組具有類似功能的類群,比如類庫,子系統等等,提供乙個一致的簡單的介面。這個一致的簡單的介面被稱作facade。

在應用系統中,為了實現某具有複雜功能的模組或子系統等時,往往需要為其設計和實現很多很小的類,也就是說,該模組或子系統是由一組具有類似功能的類群組合而成。這樣一來,怎麼呼叫這些類就成了問題。facade

就是這樣一種模式,設計乙個被稱為facade的類,該類提供乙個簡單的呼叫介面:

- 隱藏具體的實現細節,簡化呼叫關係。

- 使得呼叫方的**更加簡潔明瞭。

- 通過facade,降低外部呼叫類與內部被呼叫類間的耦合程度。

- 可以為每個不同的任務需要,準備經過良好設計的簡易的api。

facade

模式可以用下面的類圖來表示:

[出自:維基百科

wikipedia.org]

facade

為呼叫方定義簡單的呼叫介面。

clients

呼叫者。通過facade介面呼叫提供某功能的內部類群。

packages

功能提供者。指提供功能的類群(模組或子系統)。

facade

模式與adapter模式的區別

facade

模式與adapter模式存在著相當的相似之處:為即存的類提供介面統一的介面,以供外部類呼叫。

但facade模式的目的是簡化呼叫關係;adapter模式是為不同的模組/子系統提供乙個統一的介面(支援多型),旨在將乙個或多個已經存在的不統一的介面轉化成為另乙個統一的介面。

舉例說明:

1,adapter模式:

有銀行a系統,銀行b系統,它們具有大致一樣的功能,但它們的對外介面各不一樣。

如果需要在c系統中使用a系統或b系統,為了介面的一致,我們需要在c系統中實現乙個adapter,通過這個adapter提供的介面,我們就可以透明的呼叫銀行a系統的功能、或者銀行b系統的功能了;

2,facade模式:

有銀行a系統,它具有非常複雜的功能,有融資,貸款,存款,取款,信用審查,擔保等等功能,

如果需要在c系統中,只需用到a系統的一部分功能,比如融資,我們就可以為需要用到的融資功能封裝乙個facade,通過這個facade,我們不用管a系統的內部是怎麼實現融資業務的,也不用管信用審查是否通過,是否具有充分的擔保資源等等,大大簡化了客戶端的呼叫。

facade

模式的模型: a

系統有a1, a2, a3等類。客戶端需要呼叫a系統的的a1.dosomething1();a2.dosomething2();a3.dosomething3()來完成某功能。

facade

模式的實現模型就是:

a系統:

class a1

class a2

class a3

facade

:public class facade

}test

:public class client

}

設計模式之Facade

facade模式的定義 為子系統中的一組介面提供乙個一致的介面.facade乙個典型應用就是資料庫jdbc的應用,如下例對資料庫的操作 public class dbcompare connection conn null preparedstatement prep null resultset ...

設計模式之Facade

facade模式的定義 為子系統中的一組介面提供乙個一致的介面.facade乙個典型應用就是資料庫jdbc的應用,如下例對資料庫的操作 public class dbcompare catch ception e finally 上例是jsp中最通常的對資料庫操作辦法.在應用中,經常需要對資料庫操作...

設計模式之Facade

facade模式的定義 為子系統中的一組介面提供乙個一致的介面.facade乙個典型應用就是資料庫jdbc的應用,如下例對資料庫的操作 public class dbcompare catch ception e finally 可見非常簡單,所有程式對資料庫訪問都是使用改介面,降低系統的複雜性,增...