门面模式 - 969251639/study GitHub Wiki
门面模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口
项目场景:有一个咨询模块,内部包含了许多小模块的组合使用,比如咨询消息,咨询人等,那么可以使用门面模式对外提供咨询的统一接口,内部屏蔽了咨询模块下面的子模块之间的相互调用
- 新增增加一条咨询的接口
public interface ConsultService {
...
public int addMessage(...);
...
}
- 实现该接口的方法,内部调用了其他模块的组合
public class ConsultServiceImpl implements ConsultService {
...
@Override
public int addMessage(...) {
//新增消息
consultImMessageService.insert(...);
//更新未读数
consultImSessionGroupService.updateUnreadCountBySessionId(...);
//更新最后一条消息的内容和时间到会话
consultImSessionService.updateById(...);
}
...
}
- 统一对外提供门面接口
@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("保存成功");
}