1.外觀模式(facade
[fə'sɑd] n. 正面;表面;外觀)
外觀模式:可以理解為 中介模式(沒錯,就是在使用者與系統之間,增加了乙個類,而這個類就是外觀類,所以這個模式就叫外觀模式)
如下圖:
在如下圖:
2.**實現,我們就以第二個圖為例子
2.1.首先建立三個子系統類
建立cpu類:
1view codepackage
design.pattern.facade;23
public
class
cpu 78
public
void
shutdown()
11 }
同理建立memery類:
1view codepackage
design.pattern.facade;23
public
class
memery 78
public
void
shutdown()
11 }
最後建立disk類:
1view codepackage
design.pattern.facade;23
public
class
disk 78
public
void
shutdown()
11 }
2.2. 建立外觀類,或者叫 中介類 computer,為了能夠使用多型,這裡先建立乙個computer的抽象類
1view codepackage
design.pattern.facade;23
/*4* computer就是外觀介面類,
5* 這裡是要使用介面或者抽象類的了,到時使用者呼叫的都是這種型別的,
6* 這樣就算我們修改了內部,對使用者的操作都沒有影響
7* **/8
public
abstract
class
computer
在建立乙個dellcomputer繼承了computer類:
1view codepackage
design.pattern.facade;23
public
class dellcomputer extends
computer
1819
public
dellcomputer(cpu cpu,memery mem,disk disk)
2425
//下面這兩個方法都一樣,都是統一呼叫了3個子系統的方法
26@override
27public
void
turnon()
3233
@override
34public
void
shutdown()
3940 }
2.3.最後,來使用一下,建立乙個使用者 tommy類:
1view codepackage
design.pattern.facade;23
public
class
tommy
9 }
執行結果:
3.小總結:
3.1. 什麼時候使用外觀模式:
當使用者僅關心呼叫的介面,而不關心內部運作時,可以嘗試使用
3.2. 優點:
使用了中介類嘛,稍微解耦了一下,不過也正因為這個中介類,導致了它不可避免的硬傷
3.3. 缺點:
使用者呼叫這邊幾乎沒什麼問題,關鍵是,當子系統類有變動時(新增、刪除、或修改方法),中介類(外觀類)必須做修改····
Java外觀模式(Facade模式)
外觀模式 facade 的定義 為子系統中的一組介面提供乙個一致的介面。facade乙個典型應用就是資料庫jdbc的應用,如下例對資料庫的操作 public class dbcompare connection conn null preparedstatement prep null result...
Java外觀模式(Facade模式)
facade乙個典型應用就是資料庫jdbc的應用,如下例對資料庫的操作 public class dbcompare catch ceptione finally 上例是jsp中最通常的對資料庫操作辦法。在應用中,經常需要對資料庫操作,每次都寫上述一段 肯定比較麻煩,需要將其中不變的部分提煉出來,做...
外觀模式(Facade)
外觀模式的定義是,為子系統中的一組介面提供乙個一致的inte ce介面介面。外觀模式是個很簡單,但很重要的模式,它主要思想是將表現層和邏輯層隔離,封裝底層的複雜處理,只為使用者提供簡單的介面,這樣的例子隨處可見。外觀模式也叫門面模式,它很多時候更是一種系統架構的設計,在我所做的專案中,就實現了門面模...