facade java_Java设计模式之Facade模式
Java設計模式之Facade模式? GOF《設計模式》一書對Facade模式是這樣描述的:
為子系統中的一組接口提供一個統一接口。Facade模式定義了一個更高層的接口,使子系統更加容易使用。
大致意思是說:使用一種比原有方式更簡單的辦法與系統交互。例如,我們把一個很重要的文件,放在了第二抽屜里,而第二個抽屜的鑰匙放在了第一個
抽屜里,我們要想取出這個文件,第一步肯定要拿到第一個抽屜的鑰匙,然后打開它再拿出第二個抽屜的鑰匙,最后打開第二個抽屜取出文件。
我就上面說的那個情形寫一下實現代碼,首先我們要實現二個子系統,呵呵,把抽屜比喻成系統,有點夸張了(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();
}
}
由于沒有使用Facade模式,可以看到要想得到這個文件要首先打開第一個抽屜,然后再打開第二個抽屜,在我們實際所開發的系統中,有時候客戶要實
現某一操作,并不需要知道實現這一操作的詳細步驟,而是簡單地點擊某一個按鈕就可以得到自己想要的結果。下面對上面的代碼使用Facade模式進行改進,
建立一個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();
}
}
輸出結果如下:
第一個抽屜被打開了
得到第二個抽屜的鑰匙
第二個抽屜被打開了
總結
以上是生活随笔為你收集整理的facade java_Java设计模式之Facade模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac电脑一键打开文件MAC文件怎么打开
- 下一篇: 苹果手表Apple Watch怎么充电?