介绍:为子系统中的接口提供一个一致的界面,它定义了一个高层接口,这个接口使得这个子系统更加容易使用。
优点:其实我们代码中的Service层的写法就可以看成是使用了外观模式。外观模式实现了子系统与客户端之间的松耦合关系,相当于Controller和Dao的解耦合,将负责的业务处理交给Service,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。
苹果手机制作
场景:如果让我们来制作一个苹果手机。假设,我们需要实现拍照、视频聊天、通话的功能。通过外观模式,相当于对外提供了几个接口,拍照、视频聊天、通话的接口,而具体的内部处理,用户并不需要关心。
手机
public interface Phone {
// 打电话
public void call();
}
触摸屏手机
public class TouchPhone implements Phone{
@Override
public void call() {
System.out.println("点击触摸屏拨号");
}
}
相机
public interface Camera {
// 打开相机
public void open();
// 照相
public void takePhoto();
// 关闭相机
public void close();
}
索尼相机
public class SonyCamera implements Camera{
@Override
public void open() {
System.out.println("打开照相机");
}
@Override
public void takePhoto() {
System.out.println("拍照");
}
@Override
public void close() {
System.out.println("关闭照相机");
}
}
组装苹果手机
public class IPhone {
// 手机的原件
private Phone phone = new TouchPhone();
private Camera camera = new SonyCamera();
public void call() {
phone.call();
}
public void videoChat() { // 先打开相机,再通话
System.out.println("=======开始视频聊天");
camera.open();
phone.call();
}
public void takePhoto() { // 照相,先打开相机,再拍照
camera.open();
camera.takePhoto();
}
}
提枪策马乘胜追击04-21 20:01
代码小兵87207-15 12:10
杨晶珍05-11 14:54
杨晶珍05-12 17:30