消息中心设计模式UML图

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 12:42   37   0


简单描述下在一家公司消息中心组件对不同消息设备处理,简要类图如下


说明根据设备来源已有的包含安卓,苹果,微信公众号,支付宝服务窗4种:

IMessagePush:推送业务接口

IDbOperations:消息持久化接口(暂时存在Redis集群,对未到达app的消息会有“再登录拉取离线消息”补偿机制)

IWrapMsg:消息模板组装接口,系统中含有不同业务的消息在推送app之前做模板组装

AppAbstractHandler:app抽象推送类,是android与ios推送方式的父类。

ThirdPlatAbstractHandler:接入三方抽象推送类,已有的微信,支付宝两种。限制方法getTemplateParam(redis中查询平台的消息模板参数),getUrl跳转平台的url链接

由类图可以看到我并没有对三方的消息做离线持久化,原因是三方的方法我们并不可控

MessageDriver:抽象消息驱动类,它是所有消息类型的父类。最小子类需要实现它的run方法;新增加的其他类别消息都必须继承该类

MessageDriveManager:消息驱动管理类;

线程调用代码块大致如下

               MessageConfig adapter = new MessageConfig("p1","h2","b3"); 
  int termType =MqSdkConstans.DEVICETYPE.Android;
  MessageDriveManager manger = new MessageDriveManager();
  
  if(termType ==MqSdkConstans.DEVICETYPE.Android ){
   manger.setDriver(new AndroidPushHandler());
  }else if(termType ==MqSdkConstans.DEVICETYPE.Ios){
   manger.setDriver(new IosPushHandler());
  }else if(termType ==MqSdkConstans.DEVICETYPE.Weixin){
   manger.setDriver(new WeiXinPushHandler());
  }else if(termType ==MqSdkConstans.DEVICETYPE.Alipay){
   manger.setDriver(new AliPayPushHandler());
  }
  manger.messagePush(adapter);




分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP