設計模式(DesignPattern)之裝外觀模式(Facade)

1、定義

        提供一個統一的接口,用來訪問子系統的一羣接口,外觀模式定義了一個高層接口,讓子系統更容易使用。

2、關鍵點

        ①  當需要簡化並統一一個很大的接口或者一羣複雜的接口時,使用外觀模式。

        ②  外觀模式將客戶端從一個複雜的子系統中接口。

        ③  實現外觀模式,需要將子系統組合進外觀中,然後將具體操作委託給子系統。

3、UML類圖

4、代碼實現 

/**
 * 通話子系統
 */
public class CallSystem {

    public void call(){

        System.out.println("CallSystem:call");

    }

    public void hangUp(){

        System.out.println("CallSystem:hang up");

    }

}

/**
 * 攝像頭子系統
 */
public class CameraSystem {

    public void takePicture() {

        System.out.println("CameraSystem:take picture");

    }

    public void closeCamera() {

        System.out.println("CameraSystem:close camera");

    }

}

/**
 * 外觀模式高層接口
 */
public class MobilePhone {

    private CallSystem caller = new CallSystem();
    private CameraSystem camera = new CameraSystem();

    public void call() {
        caller.call();
    }

    public void hangUp(){
        caller.hangUp();
    }

    public void takePicture(){
        camera.takePicture();
    }

    public void closeCamera(){
        camera.closeCamera();
    }

}

5、總結

        優點:①  隱藏子系統接口,對外提供一個統一的高層接口,減少客戶端與子系統之間的耦合,更加便於使用。

        缺點:①  外觀接口接口膨脹,外觀對象包含了過多的子系統接口,一定程度上增加了使用成本。

                  ②  沒有遵循開閉原則,當業務出現變更時,可能需要修改外觀類。


代碼:https://gitee.com/os2chen/DesignPattern


參考:《Head First Design》、《Android源碼設計模式解析與實戰》





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