设计模式
本系列文章均是博主原创,意在记录学习上的知识,同时一起分享学习心得。前言
本章节学习一种新的结构型模式:门面模式。门面模式主要应用在接口设计方面,下面让我们一起来学习。
一、定义
门面模式,也叫外观模式,英文全称Facade Design Pattern。在GoF的《设计模式》一书中定义如下:门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。
二、应用场景
门面模式定义中的“子系统”也可以有多种理解方式。它既可以是一个完整的系统,也可以是一个类或者模块。
应用场景举例:
假设A系统有a、b、c、d接口,B系统需要分别调用a、c、d接口,利用门面模式,A系统可以把a、c、d接口组合成一个新的接口X,给到B系统调用。
门面模式有3个优势:
- 解决易用性问题
门面模式可以用来封装系统底层的实现,隐藏系统的复杂性,提供一种更简单易用、更高层的接口。 - 解决性能问题
比如举例中B系统在未使用X接口之前,需要分别调用a、c、d接口,这在需要3个请求,网络通信耗时比较久,影响整个系统体验,为了提高响应速度,减少网络通信次数是很有必要的。 - 解决分布式事务问题
假设银行金融系统分别有账户接口、钱包接口,在创建用户的时候需要分别为其创建账户和钱包,但是这两个操作是原子的,要么一起成功,要么一起失败。如果要支持两个接口在一个事务中执行,是比较难实现的,这设计分布式事务问题;而最简单的实现方案就是利用Spring框架的事务,将这两个操作放在一起执行。
总结
完成接口设计,就相当于完成了一半的开发任务。只要设计得好,代码也不会差到哪里去。尽量保持接口的可复用性,单真的特殊情况,允许提供冗余的门面接口,来提供更已用的接口。