外观模式在开发过程中运用的频率非常高,尤其是在现阶段各种第三方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
网友评论