23種設計模式-外觀模式(視頻聊天)

定義:要求一個子系統(tǒng)的外部與其內(nèi)部的通信必須通過一個統(tǒng)一的對象進行。門面模式(Facade模式)提供一個高層次的接口,使得子系統(tǒng)更易于使用。
使用場景:
1、為一個復雜子系統(tǒng)提供一個簡單接口。子系統(tǒng)往往因為不斷演化而變得越來越復雜,F(xiàn)acade可以提供一個簡單統(tǒng)一的接口,對外隱藏子系統(tǒng)的具體實現(xiàn)、隔離變化;(隱藏內(nèi)部復雜的實現(xiàn),讓我們只需要看到可以使用的功能)
2、當需要構建一個層次結構的子系統(tǒng)時,使用Facade模式定義子系統(tǒng)中每層的入口點。如果子系統(tǒng)之間是相互依賴的,可以讓他們僅通過Facade接口進行通信,從而簡化他們之間的依賴關系。(需要多個子系統(tǒng)協(xié)調(diào)完成功能,使用Facade來解除子系統(tǒng)之間的依賴關系,把門面與子系統(tǒng)、子系統(tǒng)與子系統(tǒng)之間的關系也解糅)

public interface Phone {
    //打電話
    public void dail();
    //掛斷
    public void hangup();
}

public interface Camera {
    public void open();
    public void takePicture();
    public void close();
}

public class PhoneImpl implements Phone {
    @Override
    public void dail() {
        Log.e("打電話");
    }

    @Override
    public void hangup() {
        Log.e("掛斷");
    }
}

public class SamsungCamera implements Camera {
    @Override
    public void open() {
        Log.e("打開相機");
    }

    @Override
    public void takePicture() {
        Log.e("拍照");
    }

    @Override
    public void close() {
        Log.e("關閉相機");
    }
}

public class MobilePhone {
    private Phone mPhone = new PhoneImpl();
    private Camera mCamera = new SamsungCamera();

    public void dail() {
        mPhone.dail();
    }

    public void videoChat() {
        Log.e("-->視頻聊天接通中");
        mCamera.open();
        mPhone.dail();
    }

    public void hangup() {
        mPhone.hangup();
    }

    public void takePicture() {
        mCamera.open();
        mCamera.takePicture();
    }

    public void closeCamera() {
        mCamera.close();
    }
}


public class Test {
    public static void main(String[] args) {
        MobilePhone nexus6 = new MobilePhone();
        //拍照
        nexus6.takePicture();
        //視頻聊天
        nexus6.videoChat();
    }
}
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容