首页 新闻 会员 周边 捐助

功能相同方法不同的的第三方接口如何进行抽象

0
[待解决问题]

还是关于接口的相关问题,望指点。现在都是面向接口编程。
还是以发短信 问题来提个问题。如有两套短信接口A 和 B ,这两套接口分别都有一个发送短信的方法供 商户调用。 A接口里面有个发送短信方法 SendMag(string phone,string con) B 接口里面有个发送方法 SendMessage(string [] phone,string con,string callbackurl)
像类似这样的两个短信接口如何进行,抽象。虽然功能都是发送短信。但是发送调用的方法不一样。像这样的情况如何做比较好。

yzy的主页 yzy | 菜鸟二级 | 园豆:317
提问于:2012-09-21 11:29
< >
分享
所有回答(3)
0

有点像适配器模式。

先抽象出一个接口:IMsg{void SendMsg();}

再 写两个实现

Mag:IMsg

{

A ...

  public void SendMsg()

{

 A.SendMag(string phone,string con);

}

}

另一个类似

Qlin | 园豆:2403 (老鸟四级) | 2012-09-21 11:46

参数不一样。参数如何传递进去。。适配器模式好像也只能适应参数相同方法名称不同的这种情况。。现在这种情况好像不太适合感觉。

支持(0) 反对(0) yzy | 园豆:317 (菜鸟二级) | 2012-09-21 11:50

@yzy:

默认写几个参数。万一不行,可以用实现类中的 属性字段或者 写一个参数类进行传递。

支持(0) 反对(0) Qlin | 园豆:2403 (老鸟四级) | 2012-09-21 12:14

@Qlin: 这种方式可以倒是可以。如果下次再多一个方法是 4个参数 或者更多参数的话。好像不是很合理。

支持(0) 反对(0) yzy | 园豆:317 (菜鸟二级) | 2012-09-21 15:13

@yzy: 

保持接口稳定就行,再来一个添加一个实现,跟以前的实现又不搭噶都不用管,只管新添加的实现类。

支持(0) 反对(0) Qlin | 园豆:2403 (老鸟四级) | 2012-09-21 15:35
0

把你的接口统一封装成参数对象:

Send(Message message);

Launcher | 园豆:45050 (高人七级) | 2012-09-21 13:25
0

典型的代理模式吧,写个类似中间层的代理,把那两个接口都封装进去

架构师修行之路 | 园豆:322 (菜鸟二级) | 2012-09-21 14:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册