首页 游戏资讯 正文

界面是什么意思?从零开始学习界面概念!

“界面”这玩意儿,我刚开始接触的时候,真是挠头,觉得特别玄乎。书上那些专业的解释,什么“抽象”、“契约”,看了也是云里雾里,根本进不了脑子。

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.icu

掉头发的那段日子

我记得那会儿,刚进公司没多久,算是半个新手,领导就给我派了个挺重要的活儿。咱们公司是个电商平台,要跟好几家物流公司打通发货链路。领导当时就跟我说,每家物流公司都有自己那一套下单、查单接口,各种参数、方法名都不一样,但咱们自己系统的发货流程必须统一起来。

我那会儿脑子没转过弯,想得特别简单。不就是把这些物流公司的接口挨个儿调一遍嘛于是我就吭哧吭哧地开始写代码。申通有申通的下单函数,圆通有圆通的下单函数,顺丰有顺丰的查单方法。反正就是一家物流公司一个专属的代码块。

刚开始那两三家物流公司接入的时候,勉勉强强还能应付。代码虽然看着有点重复,但总归还能跑起来。我当时还觉得,这活儿也没那么难嘛

没想到,项目进展到一半的时候,突然又有好几家新的物流公司要接入。领导一拍板,说,全部都得集成进来!我当时就感觉脑袋里“嗡”的一声,彻底傻眼了。

我之前写的那些代码,每家物流公司下单、查单、取消订单的方法名都不一样,传的参数也五花八门。如果要接入新的,我得把所有用到物流的地方都翻一遍,然后到处加一堆if else去判断当前是哪家物流,再调对应的函数。我改着改着,自己都给改晕了,调试的时候经常调错接口,数据也对不上号。

那几天真是加班加点,觉也睡不非但没把新的物流公司接反而把之前稳定的地方也搞出bug了。项目组的人看我老是出错,都有点不耐烦了。领导也找我谈话,说我进度慢得不是一点半点。那会儿真是压力山大,头发都快掉光了,感觉自己要被优化掉了。

老前辈的一句话点醒了我

我那几天晚上睡觉都在想,有没有一种“万能”的方法,能让这些长得不一样、脾气也不同的物流公司,都能按我自己的规矩来办事?我甚至梦里都在敲代码,结果醒来更绝望。

有天晚上,我实在撑不住了,就跟咱们组里一个年纪比较大的老前辈抱怨我的困境。他听我说完那些乱七八糟的物流代码,就笑了笑,说:“你这不就是没用好‘界面’的问题嘛”

我当时愣住了,心里想着“界面”?这跟物流有什么关系?我以为他说的是用户操作的那个UI界面。我问他,这俩能扯上啥关系?

他没直接给我解释,而是给我打了个特别形象的比方。他说:“你看咱们家里的插座,长得都一个样,规规矩矩的。你插个吹风机能用,插个手机充电器也能用。这个插座本身,就是个‘约定’,它规定了你插头得是三脚的,有火线零线地线。至于你插进来的是啥电器,它不关心,只要你插头符合它这个约定,它就能给你供电。”

“轰”的一下,我好像明白了

听他这么一说,我脑子里“轰”地一下就亮了。我立马想到我的物流问题!对,我不需要关心圆通、申通、顺丰它们内部是怎么实现的,我只需要它们“答应”我,它们都能提供“下单”、“查询订单”、“取消订单”这几个服务,而且这些服务的方法名和传的参数格式,都得按我定的规矩来。这不就跟我那个插座的例子一样嘛

我当时兴奋得不行,赶紧跑回去,把我的那些烂代码重新捋了一遍。我决定从头开始干。

  • 我做的第一步,就是自己“定义”了一个规矩,就叫它“物流服务协议”。这个协议里我清清楚楚地写明了所有物流公司都必须实现的几个功能:比如下订单(订单信息)查询订单(订单号)取消订单(订单号)。这就好像我把插座的“三孔”标准给定了下来。
  • 我就让每一家物流公司,都来“实现”我这个“物流服务协议”。什么圆通物流类、申通物流类、顺丰物流类,它们各自去实现那个下订单查询订单的具体细节,怎么跟他们自己的系统对接,那是他们自己的事儿,反正得实现我定义的这几个方法。这就好比每个电器都得按照三孔插头的标准去做,具体里面是电吹风还是充电器,是他们自己的事。
  • 这样一来,我的主业务逻辑里,就不需要关心到底是哪家物流了,我只要拿到一个“符合协议”的物流对象,就能直接调用它的下订单方法,完全不用再写那些恶心的if else

代码清爽了,心也踏实了

这一通操作下来,我的代码结构立马变得清晰了。以前项目里那些像一团乱麻的代码,现在变得有条不紊,整整齐齐的。

最重要的是,以后再来新的物流公司要接入,我根本不用改动我业务代码的核心逻辑,我只要让新的物流公司也按照我的“物流服务协议”去实现一遍就行了。我的主业务逻辑代码根本不需要动,只要插上新的“插头”,就能正常工作。

那几个困扰我好久的bug一下子就解决了,项目进度也很快追了回来。领导看到我把问题解决了,也没再说什么,脸上又有了笑容。我心里那块大石头才算彻底落地,晚上也能睡个安稳觉了。

从那之后,我对“界面”这玩意儿才算真正理解了,它不是什么高深的理论,也不是我以为的UI界面,它就是个“约定”,一个让不同东西能按照统一规则协作的“规矩”。就这么一步步摸索,界面这东西才算在我脑子里扎了根,成了我写代码的利器。