门面模式 - 969251639/study GitHub Wiki

门面模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口

项目场景:有一个咨询模块,内部包含了许多小模块的组合使用,比如咨询消息,咨询人等,那么可以使用门面模式对外提供咨询的统一接口,内部屏蔽了咨询模块下面的子模块之间的相互调用

  1. 新增增加一条咨询的接口
public interface ConsultService {
    ...
    public int addMessage(...);
    ...
}
  1. 实现该接口的方法,内部调用了其他模块的组合
public class ConsultServiceImpl implements ConsultService {
    ...
    @Override
    public int addMessage(...) {
        //新增消息
        consultImMessageService.insert(...);
        //更新未读数
        consultImSessionGroupService.updateUnreadCountBySessionId(...);
        //更新最后一条消息的内容和时间到会话
        consultImSessionService.updateById(...);
    }
    ...
}
  1. 统一对外提供门面接口
    @RequestMapping(value = "/addMessage", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
    @org.springframework.web.bind.annotation.ResponseBody
    public ResponseBody addMessage(...) {
    	consultService.addMessage(consultImMessageVo);
	return new ResponseBody().success("保存成功");
    }