定义
隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口,向现有的系统添加一个接口,来隐藏系统的复杂性。
这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。
作用
把子系统中一组接口封装成一个接口,这个接口使得子系统更加容易使用,降低访问复杂系统的复杂度,简化客户端之间的接口。
如何解决
客户端不与系统耦合,外观类与系统耦合。
关键代码
在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。
应用实例
删除一个角色需要删除角色和用户的映射,删除角色和菜单的映射,一个删除需要操作多张表,写成一个方法完成3件事;子系统多,就需要一个集中入口,比如微服务的网关;不在于解决什么扩展性问题,解决的是迪米特法则问题,架构多了一层,但是调用关系能简化。
优点
减少系统相互依赖;提高灵活性;提高了安全性。
缺点
不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。