策略模式实现短信平台切换
如果你需要更通用的代码,以便在不同的短信平台之间进行切换,你可以使用策略模式来实现。策略模式允许你在运行时选择不同的策略(即短信平台),而无需改变主要的业务逻辑。
首先,创建一个SmsPlatform接口,定义发送短信的方法:
public interface SmsPlatform {
void sendSms(String phoneNumber, String message);
}
然后,分别创建阿里、腾讯和华为短信平台的实现类:
@Service
public class AliSmsPlatform implements SmsPlatform {
// 实现发送短信的逻辑
}
@Service
public class TencentSmsPlatform implements SmsPlatform {
// 实现发送短信的逻辑
}
@Service
public class HuaweiSmsPlatform implements SmsPlatform {
// 实现发送短信的逻辑
}
接下来,创建一个SmsService类,负责管理短信平台的选择和发送短信的操作:
@Service
public class SmsService {
private final Map<String, SmsPlatform> platformMap;
@Autowired
public SmsService(List<SmsPlatform> smsPlatforms) {
platformMap = smsPlatforms.stream()
.collect(Collectors.toMap(platform -> platform.getClass().getSimpleName(), Function.identity()));
}
public void sendSms(String phoneNumber, String message) {
for (SmsPlatform platform : platformMap.values()) {
try {
platform.sendSms(phoneNumber, message);
return; // 发送成功后立即返回
} catch (Exception e) {
// 发送失败,继续下一个平台的尝试
}
}
throw new RuntimeException("All SMS platforms are unavailable.");
}
}
在以上代码中,SmsService的构造函数使用了List
最后,在调用短信发送的地方注入SmsService并使用它来发送短信:
@Service
public class YourService {
private final SmsService smsService;
@Autowired
public YourService(SmsService smsService) {
this.smsService = smsService;
}
public void sendSms(String phoneNumber, String message) {
smsService.sendSms(phoneNumber, message);
}
}
这样,你可以根据需要配置不同的短信平台实现类,并在运行时根据可用性进行切换。如果所有平台都不可用,将抛出运行时异常。
本文作者:spiderMan1-1
本文链接:https://www.cnblogs.com/cgy1995/p/18018868
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步