把用了 3 次的 get 方法取成公共方法,用的时候导入,是不是就叫封装 axios 了?

2022-07-20 08:05:14 +08:00
 renhou

一个 a ,b 接口 get 方法需要在不同组件用到,我把它提取成公共方法,用的时候导入
请问上述行为是封装还是复用?
补充:c 接口 get 无法使用,post 等其他接口无法使用,提取的意思就是单纯的复制粘贴

2060 次点击
所在节点    问与答
7 条回复
binux
2022-07-20 08:14:12 +08:00
复用
gzyguy
2022-07-20 08:43:52 +08:00
封装指的是创建 axios 实例并对 get 、post 等方法进行自定义。包括请求拦截等一些操作。所以题主做的是复用不是封装。
kop1989smurf
2022-07-20 09:54:39 +08:00
不太同意楼上的思路。
复用,是封装的形式之一,既没有经过特殊处理的“封装”。换句话说,不管是否进行了自定义,其实都是封装。
从软件工程角度讲,调用者是无需了解实现的,区分“复用”还是“封装”的意义很小。

但反过来讲,如果你的“封装”的内容,仅仅是调用了一个标准的库函数,既没有减少代码量,又没有实现逻辑的归纳,又徒增了耦合性,你就要思考这个封装的必要性了。
kop1989smurf
2022-07-20 09:58:37 +08:00
换句话说,楼主需要质疑和纠结的并不应该是这个行为的命名(到底是不是封装),而是这个行为本身是否有意义。
66beta
2022-07-20 10:35:27 +08:00
是封装,但不是针对 axios ,而是自己封装了一个组件
renhou
2022-07-20 11:16:41 +08:00
@66beta
@kop1989smurf
谢谢老哥们

可能有些强行,我看各种百科对封装的定义,虽然我这种“封装”比较 low 但是隐约觉得还是属于封装。。
不过就像 5 楼所说,并不是封装 axios ,而是封装了一个自己的方法

什么也不做,我会在 3 个地方写 3 个同样的 get 方法
这样“封装”的意义在于,我只需要写一个 get 方法,导入 3 次即可,感觉这样也算是减少代码量,提升维护性了

> '封装(英语:Encapsulation )是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法'
IvanLi127
2022-07-20 13:42:07 +08:00
你提取了这个接口的调用逻辑,封装了调用这个接口的方法。这个接口一直都是被复用的状态,你的操作只是把复用 level 提升到了你封装的方法上。你只是使用了 Axios ,并没有对它做什么奇怪的事情。

我感觉大概是这样。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867421

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX