Web中的積累:外觀模式 Facade

Web中的積累:外觀模式 Facade

摘要: 原創出處: http://www.cnblogs.com/Alandre/ 泥沙磚瓦漿木匠 但願轉載,保留摘要,謝謝!

壹 前言

目測很久沒寫文章了,距離上一篇文章也有二十多天。我是怎麼了?哈哈~,兩個字:生命。生命彷佛說大了,那健康吧。吃一塹長一智吧 html

image

思考對生活 對生命 java

個人信仰?佛教?基督?…當你生病了,有藥吃。好比感冒了感冒藥你會以爲藥難吃。人嗎就是那樣,但當你想到了,你生病了沒藥可吃是多麼無奈。好比我 胸悶 胸疼。隨之而來的是蹦波勞累,上海-溫州-家裏台州,各處跑。看病,啥?無病?no web

那時候的本身想起乘車就怕,四肢無力。簡直是注意力,精神都沒了。看代碼?看着java 想着是啥我都忘了。 架構

 

後來醫生藥卻是沒有,本身頹廢着…也就是那次,那次開學初。我再次乘了懼怕的動車去學校了。我相信本身會慢慢好的,不熬夜,規律休息。第一個星期是最漫長的日子、聽課無力,坐多了腰疼。shit!堅持…堅持…後來明顯慢慢有力了。第二個星期,我開始鍛鍊,目前第三個星期了,我堅持鍛鍊了六天。fuck my heath! i am coming , hope no so late。 學習

image

 

貳 外觀模式的接觸

看源碼是種享受,最近各類看。沒事就看,有事就忙。我以爲貴在學習吧。哈哈~ 第一次看到了是這裏: 測試

image

 

正所謂,知之爲知之,用到纔算真。小朽不懂,就立刻去百度了下這個Facade。得知是個模式,正好呀,學唄。說罷就查了視頻看,查了人家的博客看。值得看何須不看呢。 this

 

外觀模式(Facade)能夠江一系列複雜的包封裝成一個簡單的封閉接口。也能夠說,一個子系統的外部與其內部的通訊必須經過一個統一的Facade對象進行。這裏的通訊的意思:彼此相互做用。它的做用提供了一個高層的接口,易於使用。 google

 

叄 外觀模式的結構

Facade         爲調用方定義簡單的調用接口。 
Clients          調用者。經過Facade接口調用提供某功能的內部類羣。 
Packages     功能提供者。指提供功能的類羣(模塊或子系統) spa

image

肆 外觀模式小例子

現實中,八九十年代,沒有基金的時候。國債,股票,期貨…都是各自運行的。例以下面: 設計

股票:

1
2
3
4
5
6
public class Gupiao {  
        
    public void mai() {  
        System.out.println("買股票");  
    }  

期貨:

1
2
3
4
5
6
public class Qihuo {  
        
    public void chao() {  
        System.out.println("買期貨");  
    }  

國債:

1
2
3
4
5
6
public class GuoZai {  
        
    public void mai() {  
        System.out.println("買國債");  
    }  

若是你想買國債,買期貨,你會跟各自的系統打交道。new 其中一個對象進行操做。因此這會形成下面幾點:

       1.耦合度增長

       2.無層次化,結構不分明

 

自從有了基金。什麼是基金,按着外觀模式的說法,就是你不知道有多少種股票或者啥,基金幫你打理這些小系統。它幫你安排了各類方案,好比

基金:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class JiJin {  
    private Gupiao gupiao;  
    private GuoZai guozai;  
    private Qihuo qihuo;  
        
    public JiJin() {  
        this.guozai =new GuoZai();  
        this.gupiao =new Gupiao();  
        this.qihuo =new Qihuo();  
    }  
        
    public void maiJijinA() {  
        this.guozai.mai();  
        this.gupiao.mai();  
    }  
        
    public void maiJijinB() {  
        this.guozai.mai();  
        this.gupiao.mai();  
        this.qihuo.chao();  
    }  

測試案例:

1
2
3
4
5
6
public class MainClass {  
    public static void main(String[] args) {  
        JiJin jijin =new JiJin();  
        jijin.maiJijinB();  
    }  

這樣一來,其實用性就出來了:

  1.爲一個複雜子系統提供一個簡單接口。

  2.提升子系統的獨立性。

  3.在層次化結構中,可使用Facade模式定義系統中每一層的入口。

 

伍 思考在Web中

 

1  web三層構架,其實在數據訪問層和業務邏輯層,業務邏輯層和表示層的層與層之間創建外觀Facade模式應用,爲複雜的子系統提供一個簡單的接口或者抽象類,使得耦合大大下降。

2  在開發階段,子系統每每由於不斷的重構演化而變得愈來愈複雜,大多數的模式使用時也都會產生不少很小的類,這本是好事,但也給外部調用它們的用戶程序帶來了使用上的困難,增長外觀Facade能夠提供一個簡單的接口,減小它們之間的依賴。

    具體作法:將小類規劃,分類。而後實現代理Facade。

3  在維護一個遺留的大型系統時,可能這個系統已經很是難以維護和擴展了,但由於它包含很是重要的功能,新的需求開發必須依賴於它。此時用外觀模式Facade也是很是合適的。例如能夠開發一個外觀Facade類,來提供設計粗糙或高度複雜的遺留代碼的比較清晰簡單的接口,讓新系統與Facade對象交互,Facade與遺留代碼交互全部複雜的工做。

image

陸 感謝知識來源和小結

能夠普遍用於WEB,項目架構。加油!!

參考資料:

google文章和本身的體會。

如以上文章或連接對你有幫助的話,別忘了在文章按鈕或到頁面右下角點擊 「贊一個」 按鈕哦。你也能夠點擊頁面右邊「分享」懸浮按鈕哦,讓更多的人閱讀這篇文章

相關文章
相關標籤/搜索