Fork me on GitHub

同一编程接口-外观模式

外观模式接口比较简单,就是通过一个统一的接口对外提供服务,使得外部程序只通过一个类就可以实现系统内部的多种功能

这里就举一个由用户来操控手机的小例子

子系统接口类

  1. 手机通话系统接口

    1
    2
    3
    4
    public interface Phone {
    void dail();
    void hangup();
    }
  2. 相机系统接口

    1
    2
    3
    4
    5
    public interface Camera {
    void open();
    void tackPhoto();
    void close();
    }

子系统具体类

  1. 通话系统

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class PhoneImpl implements Phone {
    @Override
    public void dail() {
    System.out.println("call");
    }

    @Override
    public void hangup() {
    System.out.println("hangup");
    }
    }
  2. 相机系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class PixelCamera implements Camera {
@Override
public void open() {
System.out.println("open camera");
}

@Override
public void tackPhoto() {
System.out.println("tack photo");
}

@Override
public void close() {
System.out.println("close camera");
}
}

上层系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MobilePhone {
private Phone phone = new PhoneImpl();
private Camera camera = new PixelCamera();
public void videoChat() {
camera.open();
phone.dail();
}

public void tackPhoto() {
camera.open();
camera.tackPhoto();
}

public void closeCamera() {
camera.close();
}
}

使用如下

1
2
3
4
5
6
7
8
public class Main {
public static void main(String[] args) {
MobilePhone pixel = new MobilePhone();
pixel.tackPhoto();
pixel.videoChat();
pixel.closeCamera();
}
}