框架编写之聊天框架认识(二)

各位亲:
    由于过年(回家没有网络),本次更新为四篇文章。本篇是第一篇,主要介绍如何实现聊天消息的发送
框架的设计,这里主要设计到了观察者模式的应用。
首先在此祝大家新年快乐。
    
   如果在公司某一天你的老大过来说,小张在咱们的app中的添加一个聊天功能吧(貌似支付宝正在推广这
个)。这个时候你是否一头雾水,什么IM协议,消息类型都不知道,那你要
怎么做呢?如何去调研等等工作呢?还是直接写代码?都不太合适。尤其是UI界面都不一样。那我们能做什
么呢?

  我们首先能做的是整体的设计,比如说一个聊天,这个聊天就是一个点对点的(无论是私聊还是群聊),
都是对message消息的发送和接受。但是消息从哪里来呢? 发送谁呢?这些
都不知道,但是我我知道的是发送消息时,发送的状态(发送中、发送成功和发送失败)。我接受消息我能
解析出来(json、和object)。

  大家都有微信和qq,在微信中不管您是否在聊天中还是在主界面,只要来消息,通知栏和提示符号都会在
同一时间被执行。这个实现原理是什么呢?这个就是观察者模式的应用,其实
在平时开发中会经常使用,比如按钮的点击事件等等,简单说,就是一个对象在通知它后,他会时刻观察他
感兴趣的事件,只要这个事件被触发,他就执行对应的行为(方法)。
  
  在聊天中会遇到身什么类型的数据,这些都要有一定的封装,这里就要使用实体类(DTOMessage)来封装。

public class DTOMessage implements Serializable{
    public enum MessageStaty{
//        发送状态
        sending,success,failure
    }
     
    public enum MessageType{
//        消息类型
        text,voide,audio,location,img
    }
    public MessageType type;
    public MessageStaty status;
    public String content;//消息内容
    public String msgId;//消息id
    @Override
    public String toString() {
        return "DTOMessage [type=" + type + ", status=" + status + ", content="
                + content + ", msgId=" + msgId + "]";
    }
    
}
第二步骤:
 就是创建观察者定义,此观察者主要作用是实现了对事件的处理,但一般不做具体处理(很多时候为抽象方法)。

public class PushWatcher implements Observer {

    @Override
    public void update(Observable observable, Object data) {
     if(data instanceof DTOMessage){
         notifyMessage((DTOMessage)data);
         }          
    }
//   具体执行的方法
    private void notifyMessage(DTOMessage data) {
//        TO-DO UI  SQLite 
        
    }

}

第三步骤:
  创建被观察者,即当什么时候让观察者来做出反映。
  这里的观察者使用了单例模式,建议使用单例模式来创建对象。
public class PushChanger extends Observable {
   
    private static PushChanger mInsatnce;
    private PushChanger(){
        
    }
    public static PushChanger getInstance(){
        if(mInsatnce==null){
            mInsatnce=new PushChanger();
        }
        return mInsatnce;
    }
    
    public void handleMes(String content){
        setChanged();
        notifyObservers(content);//通知观察者
    }
}
 
第四步骤:
  就是在获得数据时,获得被观察者对象来说通知观察者执行某些特定的工作。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值