外观模式

Posted milovetingting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外观模式相关的知识,希望对你有一定的参考价值。

个人博客

http://www.milovetingting.cn

外观模式

模式介绍

外观模式在开发过程中的运用频率非常高。通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。外观模式是我们封装API的常用手段。

模式定义

要求一个子系统的外部与内部通信必须通过一个统一的对象进行。

使用场景

  1. 为一个复杂子系统提供一个简单接口。

  2. 当需要构建一个层次结构的子系统,用外观模式定义子系统中每层的入口点。

简单使用

定义Phone接口

public interface Phone {
    void dial();
    void hangup();
}

定义Phono实现类

public class PhoneImpl implements Phone {

    @Override
    public void dial() {
        System.out.println("打电话");
    }

    @Override
    public void hangup() {
        System.out.println("挂断");
    }

}

定义Camera接口

public interface Camera {
    void open();

    void takePhoto();

    void close();
}

定义Camera实现类

public class CameraImpl implements Camera {

    @Override
    public void open() {
        System.out.println("打开相机");
    }

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

    @Override
    public void close() {
        System.out.println("关闭相机");
    }

}

定义MobilePhone类

public class MobilePhone {

    private Phone mPhone = new PhoneImpl();

    private Camera mCamera = new CameraImpl();

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

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

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

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

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

}

调用

public class Main {

    public static void main(String[] args) {
        MobilePhone mobilePhone = new MobilePhone();
        mobilePhone.takePhoto();
        mobilePhone.videoChat();
    }

}

输出结果

打开相机
拍照
-->视频聊天接通中
打开相机
打电话

以上是关于外观模式的主要内容,如果未能解决你的问题,请参考以下文章

外观模式

设计模式之外观模式

java设计模式-外观模式

2015-03-12---外观模式,建造者模式(附代码),观察者模式(附代码),boost库应用

外观模式(Facade Pattern)

设计模式:外观(Facade)模式