renhou
V2EX  ›  问与答

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

By renhou at 2022 年 7 月 20 日 · 2895 次点击

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

7 条回复  •  2022-07-20 13:42:07 +08:00
binux
   1
binux  
   2022 年 7 月 20 日 via Android   ❤️ 1
复用
callv
   2
callv  
   2022 年 7 月 20 日 via iPhone   ❤️ 1
封装指的是创建 axios 实例并对 get 、post 等方法进行自定义。包括请求拦截等一些操作。所以题主做的是复用不是封装。
kop1989smurf
   3
kop1989smurf  
   2022 年 7 月 20 日   ❤️ 2
不太同意楼上的思路。
复用,是封装的形式之一,既没有经过特殊处理的“封装”。换句话说,不管是否进行了自定义,其实都是封装。
从软件工程角度讲,调用者是无需了解实现的,区分“复用”还是“封装”的意义很小。

但反过来讲,如果你的“封装”的内容,仅仅是调用了一个标准的库函数,既没有减少代码量,又没有实现逻辑的归纳,又徒增了耦合性,你就要思考这个封装的必要性了。
kop1989smurf
   4
kop1989smurf  
   2022 年 7 月 20 日
换句话说,楼主需要质疑和纠结的并不应该是这个行为的命名(到底是不是封装),而是这个行为本身是否有意义。
66beta
   5
66beta  
   2022 年 7 月 20 日   ❤️ 1
是封装,但不是针对 axios ,而是自己封装了一个组件
renhou
   6
renhou  
OP
   2022 年 7 月 20 日
@66beta
@kop1989smurf
谢谢老哥们

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

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

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

我感觉大概是这样。
© 2026 V2EX · 38ms · 3.9.8.5