我有一个 task 通过 ssh 运行 N 种命令, 假设 ls -l 和 cat /etc/host吧. 然后把输出存起来.
理想中的结构是:
task 依赖 handler 依赖 sshclient
其中,
handler 是函数, 参数是 sshclient, 一个 handler 执行一种命令
sshclient 是接口, 干活的.
这个 sshclient 实例化过程只能在 task 中动态生成, 因为 sshclient 需要的 ip 是在 task 中的其他函数获取的.
我得问题:
- task 依赖 handler. 但是 handler 的参数的类型(也就是 sshclient) 定义在 task 中, 这不循环导入了吗?
目前的解决方案是, 我在 handler 和 task 中分别定义两个一模一样的接口, 然后通过适配的方式能让代码运行. 我不确定这样处理是否合理? 还是说我这个设计本身就有问题? 通过注入接口能实现吗?
- 当一个接口的实现的依赖是动态数据的时候, (譬如 sshclient 中的 ip, 端口, 认证信息), 还需要注入吗? 如何注入? 我目前采用的方案是注入一个无参的返回值是工厂函数的函数...然后再 task 中实例化 sshclient. 补充: sshclient 可能有 100 个, 不是一个固定的 client. 说白了我是通过 ssh 采集信息的. 和 *db.DB 不是一个类型.
目前有点混乱, 如果我没问清楚欢迎各位大佬提出你的疑问 我尽量补充信息.


