您的位置:首页 > 其它

消息中心设计模式UML图

2016-10-10 14:30 1031 查看
简单描述下在一家公司消息中心组件对不同消息设备处理,简要类图如下



说明根据设备来源已有的包含安卓,苹果,微信公众号,支付宝服务窗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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: