什麼是外觀模式(Facade)?

世界上並沒有完美的程序,但是我們並不因此而沮喪,因爲寫程序就是一個不斷追求完美的過程。

  1. 意圖
    對外提供統一接口,屏蔽內部負複雜的實現流程,例如:springMVC的 DAO Service Controller。
  2. 實例
// 功能接口
interface FacadeCap{
    void play();
}

class FacadeCapImpl1 implements FacadeCap{
    @Override
    public void play() {
        System.out.println("Facade1::play()");
    }
}

class FacadeCapImpl2 implements FacadeCap{
    @Override
    public void play() {
        System.out.println("Facade2::play()");
    }
}

class FacadeCapImpl3 implements FacadeCap{
    @Override
    public void play() {
        System.out.println("Facade3::play()");
    }
}

// 外部統一調用接口
interface Facade{
    void play1();
    void play2();
    void play3();
}

class FacadeImpl implements Facade{
    private FacadeCap facadeCap1;
    private FacadeCap facadeCap2;
    private FacadeCap facadeCap3;

    public FacadeImpl(){
        facadeCap1 = new FacadeCapImpl1();
        facadeCap2 = new FacadeCapImpl2();
        facadeCap3 = new FacadeCapImpl3();
    }

    @Override
    public void play1() {
        facadeCap1.play();
    }

    @Override
    public void play2() {
        facadeCap2.play();
    }

    @Override
    public void play3() {
        facadeCap3.play();
    }
}
  1. 測試
// 測試
class FacadeTest{
    public static void main(String[] args){
        Facade facade = new FacadeImpl();
        facade.play1();
        facade.play2();
        facade.play3();
    }
}

運行結果:

Facade1::play()
Facade2::play()
Facade3::play()

想看更多嗎?請訪問:設計模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章