个人博客
http://www.milovetingting.cn
外观模式
模式介绍
外观模式在开发过程中的运用频率非常高。通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。外观模式是我们封装API的常用手段。
模式定义
要求一个子系统的外部与内部通信必须通过一个统一的对象进行。
使用场景
为一个复杂子系统提供一个简单接口。
当需要构建一个层次结构的子系统,用外观模式定义子系统中每层的入口点。
简单使用
定义Phone接口
1 2 3 4
| public interface Phone { void dial(); void hangup(); }
|
定义Phono实现类
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class PhoneImpl implements Phone {
@Override public void dial() { System.out.println("打电话"); }
@Override public void hangup() { System.out.println("挂断"); }
}
|
定义Camera接口
1 2 3 4 5 6 7
| public interface Camera { void open();
void takePhoto();
void close(); }
|
定义Camera实现类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 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类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 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(); }
}
|
调用
1 2 3 4 5 6 7 8 9
| public class Main {
public static void main(String[] args) { MobilePhone mobilePhone = new MobilePhone(); mobilePhone.takePhoto(); mobilePhone.videoChat(); }
}
|
输出结果
1 2 3 4 5
| 打开相机 拍照 -->视频聊天接通中 打开相机 打电话
|