亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2526 | 回復: 0
打印 上一主題 下一主題

Facade模式(轉(zhuǎn)載) [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-01-08 06:31 |只看該作者 |倒序瀏覽
======此文從網(wǎng)絡上轉(zhuǎn)載,并做了些補充======
GOF《設計模式》一書對Facade模式是這樣描述的:
       為子系統(tǒng)中的一組接口提供一個統(tǒng)一接口。Facade模式定義了一個更高層的接口,使子系統(tǒng)更加容易使用。
       大致意思是說:使用一種比原有方式更簡單的辦法與系統(tǒng)交互。例如,我們把一個很重要的文件,放在了第二抽屜里,而第二個抽屜的鑰匙放在了第一個抽屜里,我們要想取出這個文件,第一步肯定要拿到第一個抽屜的鑰匙,然后打開它再拿出第二個抽屜的鑰匙,最后打開第二個抽屜取出文件。
       我就上面說的那個情形寫一下實現(xiàn)代碼,首先我們要實現(xiàn)二個子系統(tǒng),呵呵,把抽屜比喻成系統(tǒng),有點夸張了(DrawerOne、DrawerTwo):
class DrawerOne {
    public void open(){
       System.out.println("第一個抽屜被打開了");
       getKey();
    }
    public void getKey(){
       System.out.println("得到第二個抽屜的鑰匙");
    }
}
class DrawerTwo{
    public void open(){
       System.out.println("第二個抽屜被打開了");
       getFile();
    }
    public void getFile(){
       System.out.println("得到這個重要文件");
    }
}
public class Client{
    public static void main(String []args){
       DrawerOne darwerOne=new DrawerOne();
       DrawerTwo darwerTwo=new DrawerTwo();
       darwerOne.open();
       darwerTwo.open();
    }
}
由于沒有使用Façade模式,可以看到要想得到這個文件要首先打開第一個抽屜,然后再打開第二個抽屜,在我們實際所開發(fā)的系統(tǒng)中,有時候客戶要實現(xiàn)某一操作,并不需要知道實現(xiàn)這一操作的詳細步驟,而是簡單地點擊某一個按鈕就可以得到自己想要的結(jié)果。下面對上面的代碼使用Façade模式進行改進,建立一個FacadeDrawer類:
class DrawerFacade{
    DrawerOne darwerOne=new DrawerOne();
    DrawerTwo darwerTwo=new DrawerTwo();
    public void open(){
       darwerOne.open();
       darwerTwo.open();
    }
}
修改Client類:
public class DrawerClient{
    public static void main(String []args){
       DrawerFacade drawer=new DrawerFacade();
       drawer.open();
    }
}
輸出結(jié)果如下:
第一個抽屜被打開了
得到第二個抽屜的鑰匙
第二個抽屜被打開了
得到這個重要文件
正如上面所說,客戶端client,它并不需要關心子系統(tǒng),而是關心DrawerFacade所留下來的和外部交互的接口,而子系統(tǒng)在DrawerFacade的聚合。
    Facade模式主要適用于以下幾種情況:
1)    不需要使用一個復雜系統(tǒng)的所有功能,而且可以創(chuàng)建一個新的類,包含訪問系統(tǒng)的所有規(guī)則。如果只需要使用系統(tǒng)的部分功能,那么你為新類所創(chuàng)建的API將比原系統(tǒng)的API簡單的多。
2)    希望封裝或者隱藏系統(tǒng)原系統(tǒng)。
3)    希望使用原系統(tǒng)的功能,而且還希望增加一些新的功能。
4)    編寫新類的成本小于所有人學會使用或者未來維護原系統(tǒng)上所需的成本。
Fasade模式可以用下面的示意圖來表示:

由上圖可以看出, facade 實際上是個理順系統(tǒng)間關系,降低系統(tǒng)間耦合度的一個常用的辦法

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/67175/showart_2143541.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP