目的

提供了一个统一的接口,用来访问子系统中的一群接口,从而让子系统更容易使用。

类图

外观类图.png

实现

观看电影需要操作很多电器,使用外观模式实现一键看电影功能。

  1. public class SubSystem {
  2. public void turnOnTV() {
  3. System.out.println("turnOnTV()");
  4. }
  5. public void setCD(String cd) {
  6. System.out.println("setCD( " + cd + " )");
  7. }
  8. public void startWatching(){
  9. System.out.println("startWatching()");
  10. }
  11. }
  12. public class Facade {
  13. private SubSystem subSystem = new SubSystem();
  14. public void watchMovie() {
  15. subSystem.turnOnTV();
  16. subSystem.setCD("a movie");
  17. subSystem.startWatching();
  18. }
  19. }
  20. public class Client {
  21. public static void main(String[] args) {
  22. Facade facade = new Facade();
  23. facade.watchMovie();
  24. }
  25. }

设计原则

最少知识原则:只和你的密友谈话。也就是说客户对象所需要交互的对象应当尽可能少。