最近在工作中,公司( Java 系)使用的某一短信平台偶有问题。而且短信的代码有很久的历史包袱,上司叫我重构短信部分的代码。
现在接入的短信平台典型有阿里云,云片,互亿无线,还有一些不准备充钱但还有余额的就不列出来了。
上司希望我能处理好短信发送失败能切换渠道尽力尝试,国际短信,以及发送结果回调的处理。
这几天最烧脑袋的还是软件设计的问题。
不同的短信渠道处理方式不太一样,比如阿里只能通过 templateCode (模板代码)与模板参数发短信,而互亿无线则需要把短信全部拼接成字符串上传(对方会根据内容识别已审核的模板),而云片则支持两种方式。
而不同渠道所需要的方法参数也是不一样的。
所以简单设计一个 interface 再实现是行不通的。
public interface SendSms {
void send(xxx);
}
在这里问各位 v 友怎么优雅地抽象封装国内大部分短信 API 接口。
谢谢