重学设计模式之外观模式

135 阅读1分钟

目录

  • 外观设计模式定义
  • 使用场景
  • 代码实现

外观模式定义

子系统的外部与其子系统通信使用唯一对象进行,这样隐藏系统的复杂性,并向客户端提供了一个可以访问系统的接口。

使用场景

  1. 为一个复杂子系统提供一个简单接口,对外隐藏子系统的具体实现、隔离变化。
  2. 需要构建一个层次结构的子系统,使用外观模式可以定义子系统的入口。

代码实现

// 相机子系统
public class Camera {

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

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

    public void takePic(){
        System.out.println("拍摄照片");
    }
}

// 通话子系统
public class Phone {

    public void call(){
        System.out.println("打电话");
    }

    public void huangUp(){
        System.out.println("挂断");
    }
}

// Phone 和 Camera 两个子系统的唯一适用对象
public class MobilePhone {

    private Phone mPhone = new Phone();
    private Camera mCamera = new Camera();

    public void takePhone() {
        mPhone.call();
        System.out.println("通话3s");
        mPhone.huangUp();
    }

    public void takePic() {
        mCamera.open();
        mCamera.takePic();
        mCamera.close();
    }
}

// 客户端使用
public class FacadeTest {

    @Test
    public void test() {
        MobilePhone mobilePhone = new MobilePhone();
        mobilePhone.takePhone();
        System.out.println("=============");
        mobilePhone.takePic();
    }
}

// 结果
打电话
通话3s
挂断
=============
开启相机
拍摄照片
关闭相机