Android源码设计模式学习笔记-外观模式

外观模式在开发过程中运用的频率非常高,尤其是在现阶段各种第三方sdk充斥的周边,这些sdk很大概率会使用外观模式。通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能降低用户的使用成本,对用户屏蔽了很多实现细节。它的uml类图如下:


image.png

外观模式的简单示例

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

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

    public void videoChat(){
        System.out.println("-->视频聊天接通中");
        mCameraImpl.open();
        mPhone.dail();
    }

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

    public void takePic(){
        mCameraImpl.open();
        mCameraImpl.takePic();
    }

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

}
public interface Camera {
    void open();
    void takePic();
    void close();
}
public class SamsungCamera implements Camera {
    @Override
    public void open() {
        System.out.println("打开相机");
    }

    @Override
    public void takePic() {
        System.out.println("拍照");
    }

    @Override
    public void close() {
        System.out.println("关闭相机");
    }
}
public interface Phone {
    //打电话
    void dail();
    //挂断
    void hangup();
}
public class PhoneImpl implements Phone{
    @Override
    public void dail() {
        System.out.println("打电话");
    }

    @Override
    public void hangup() {
        System.out.println("挂断");
    }
}
public class Test {
    public static void main(String[] args){
        MobilePhone nexus6 = new MobilePhone();
        //拍照
        nexus6.videoChat();
        //拍照
        nexus6.takePic();
    }
}

结合一张用例图将会更直观清晰感受一下上面的外观模式


image.png

你可能感兴趣的:(Android源码设计模式学习笔记-外观模式)