开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情
定义
大话设计模式定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
应用场景
看了别人对外观设计模式的定义分析之后,比如:
1.喝茶,自己喝茶需要烧水、买茶叶、洗杯子等。而去店里面只需要说具体的喝茶即可
2.以前注册新的网站、app啥的,需要填一大推东西,现在都提供一个接口,一键带入
反外观模式
开发
以前刚写代码的时候,需要配合前端做一个页面。页面左边是详细数据列表,右边是三个图表。初步看下来至少得 4 个 sql。也就是对应 4 个方法。这还不简单,直接 4 个 select 完事。然后我和前端一顿操作,我这里统一封装,只给前端提供一个接口,完全就是外观模式的简单型实现。将多个逻辑封装为一个,外部调用只需要关注这一个即可。
然后高高兴兴的发测试,没问题,测试人员也测试通过了。坐等上线了。
上线
上完线之后,先导一波数据吧,先一个账期试试水。巴拉巴拉,没问题。全账期导入吧。
嗯~你服务出现问题了?怎么页面一直刷新啊,清缓存也刷不出来啊(这个操作必然有)。你赶紧看看吧。因为变量只有一个:导数。所以我直接在工具中跑 SQL 看看情况。果然其中四个 SQL ,有两个 SQL 跑的很慢。然后 4 个 SQL 串联,整个接口就慢多了。
于是组长给我的建议是:你 SQL 没有承上启下的话可以同时跑,我说后台搞个多线程?我不太会啊。他说:直接拆分接口吧。
于是一个接口变成了四个接口。此时每个接口的响应速度稍微快了一点。其中两个慢的接口后续分析还上了缓存。
总结
按照我目前的理解,好像不用写代码,就是把多种逻辑组合在一起,提供更良好的调用接口。
优点:对外接口整合简单易用
缺点:如果统一接口的能力不给力,还是需要分开做的。否则影响业务。好像说的是废话...