前言
之前就写过一篇关于怎么理解运用接口Interface
的文章,但似乎是理解得不太好。近期有个项目开发中就卡壳了。
问题还原
我在用环信的SDK开发一个视频聊天模块,对于环信来说,只需要传入个String类型的用户ID用于拨号即可。但项目需求是要在聊天界面显示些数据,例如剩余可聊天时间
。且这个时间时要持久化到本地的,每次拨通时,从本地读取时间,并在聊天界面倒计时。
所以,单纯像最开始写的Demo,只在Intent中传一个String的用户ID已经无法满足需求了。
于是我就把整个记载视频聊天信息的对象传过去。这个对象目前为A,里面有聊天会话的用户ID、剩余聊天时间等信息。
public class A{
private String toUserId;
private long videoTime;
//其他业务数据字段
...
//getter、setter
...
}
那么,我在视频聊天的Activity中,拿到了这个对象,直接操作该对象的方法获取需要的时间数据videoTime
。
这样,的确是能完成需求的。
但有一天,另外一个模块也要接入视频聊天
,然而他的数据体不一样。
于是我创建了一个接口Interface:
public interface CallTimer extends Serializable {
String getCallPhone();
void setCallTime(long ms);
long getCallTime();
}
既然对于视频聊天的Activity来说,需要的只是固定的几个数据,以及对着几个数据进行保存。那么我让各自模块中存放这些数据的类实现了CallTimer
接口,然后再视频聊天的Activity中,用CallTimer来接收引用不同模块传入的数据对象即可。