参考的是网易云信的设计IMMessage
它这个类是个接口,至于具体实现类,当然反编译了,无法查看,不过我大致推测其中的实现类。
为啥要参考其实现,我认为好的实体设计是必要的,会减少很多后面修改。
定义Message
你也可以把Message再抽象一层,仿照IMMessage设计,我这里给出实现定义。
注意关注点在MsgBody定义上
/**
* 消息实体
*/
class Message {
var uuid: String? = null
var msgId: String? = null
var msgType: MsgType? = null
var body: MsgBody? = null
var sentStatus: MsgSendStatus? = null
var senderId: String? = null
var targetId: String? = null
var sentTime: Long = 0
}
import java.io.Serializable
open class MsgBody : Serializable {
var localMsgType: MsgType? = null
}
比如你要定义一个文字消息体,可以继承这个MsgBody
class TextMsgBody : MsgBody {
var message: String? = null
var extra: String? = null
constructor() {
}
constructor(message: String?) {
this.message = message
}
override fun toString(): String {
return "TextMsgBody{" +
"message='" + message + '\'' +
", extra='" + extra + '\'' +
'}'
}
}
或者其他的类型,比如文件消息
/**
* 文件消息体
*
*
* Author: Mr.bingley
* Version:
* Date: 2020/8/7
*/
open