个人博客
外观模式
模式介绍
外观模式在开发过程中的运用频率非常高。通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。外观模式是我们封装API的常用手段。
模式定义
要求一个子系统的外部与内部通信必须通过一个统一的对象进行。
使用场景
-
为一个复杂子系统提供一个简单接口。
-
当需要构建一个层次结构的子系统,用外观模式定义子系统中每层的入口点。
简单使用
定义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();
}
}
输出结果
打开相机
拍照
-->视频聊天接通中
打开相机
打电话