设计模式-外观模式(十)

外观模式,又叫门面模式

  • 外部对子系统的通信必须要有一个统一的门面对象进行.
  • 一个复杂系统可以有几个门面
  • 满足迪米特法则(一个类和尽量少的类产生关联)

什么时候用门面模式呢?
当要和外围系统交互的时候,我们一般只暴露最后的功能,而不把怎么实现的各个细节相关的类都扔出去.这样子系统的内部结构可以随意变化而不影响其他系统.和现在微服务思想差不多.都是通过API调用.service as function...

示意图:


设计模式-外观模式(十)_第1张图片
image.png

代码示例:

package com.byedbl.facade;

/**
 * 
 * 门面模式
 *
 * 比如我现在想建一个房子,大家知道建房子很复杂,要砌墙,造门,装修等等等....
 * 如果不用门面模式,那我们要对整个的创建过程很熟悉,有了门面模式之后就很简单了
 * 门面类提供方法叫建房子createRoom,我直接调用就可以啦,完全不用管里面具体要干什么
 *
 * 利用门面模式,我们可以大大减少外围系统和其他子系统的各种复杂交互
 * @author : zengzhijun
 * @date : 2018/5/24 10:03
 **/
class Wall {
    public Wall() {
        System.out.println("Create a wall !");
    }
}

class Door {
    public Door() {
        System.out.println("Create a door !");
    }
}

class FacadeRoom {
    public void createRoom() {
        Wall wall1 = new Wall();
        Wall wall2 = new Wall();
        Wall wall3 = new Wall();
        Wall wall4 = new Wall();
        Door door = new Door();
    }

}

public class Test {
    public static void main(String[] args) {
        FacadeRoom room = new FacadeRoom();
        room.createRoom();
    }
}

你可能感兴趣的:(设计模式-外观模式(十))