IM实现-定义消息体

本文参考网易云信的IMMessage接口设计,探讨如何定义和创建消息体。重点在于MsgBody的定义,允许通过继承创建不同类型的消息体,如文字消息或文件消息,以实现灵活的消息实体设计,减少后期修改的需求。
摘要由CSDN通过智能技术生成

参考的是网易云信的设计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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值