首页 新闻 会员 周边

在写手机短信验证码接口时碰到的问题

1
悬赏园豆:20 [已解决问题] 解决于 2016-09-18 08:13

原先的想法是集成二个短信接口,在web.config里指定一个appsettings,使用时就用其中一个接口,如下:

<!--短信网关 SmsCN 或 YunPian-->
<add key="sms" value="SmsCN" />

然后使用简单工厂来封装,如图:

这样的封装,很好的实现了可以使用一个接口,如果要使用另外一个接口,需要修改web.config,而修改web.config会造成连接中断,用户体验并不好。

 

但是现在的需求变了,需要同时使用这个二个接口,比如验证码用一个接口,手机找回密码用另一个接口,这二个接口要可以同时使用。但是我在代码中又不想使用new 该如何改造?可以用工厂或spring.net注入都可。实际如下

问题补充:

暂时想到一种方法,直接去掉SMSHelper这个类,在UI层直接使用

ISmsHelper sms =SMSFactory.Create("YunPian");

sms.send("","");

这样去掉SMSHelper这个类后,每个调用的地方要多写一行代码

DZCMS的主页 DZCMS | 初学一级 | 园豆:5
提问于:2016-09-14 21:44
< >
分享
最佳答案
1

SMSFactory加属性.不同属性返回不同对象.现在晚.明天再来喷你的结构..

收获园豆:20
吴瑞祥 | 高人七级 |园豆:29449 | 2016-09-15 00:21

 愿闻其详

DZCMS | 园豆:5 (初学一级) | 2016-09-15 16:17

@abc54288: 不好意思.那天晚上心情不好..

不是SMSFactory.Create 而是modulefactory.SMS,总的来说就是短信功能是一种模块.这种模块现在有2个实现.并且都从模块工厂中获取.所以是modulefactory.SMS1/modulefactory.SMS2

所以一般起点是:模块基类接口.具体某个某块的接口继承这个接口.

PS:这种业务不要用ioc.完全没有任何意义.

吴瑞祥 | 园豆:29449 (高人七级) | 2016-09-16 17:34

@吴瑞祥: 我上面的结构套用了原先用httpruntime.cache和memcached切换的这种模式,用在这里的确是不太好。

DZCMS | 园豆:5 (初学一级) | 2016-09-17 00:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册