s2sh框架中如何优美的实现触发式消息系统?

问题描述

触发式消息,也就是根据某个特定的事件,比如评论、收藏等事件,会触发对应的消息提醒,生成一条消息记录,通知相关的用户。 现在就是在每个方法中强行插入生成消息的代码,这样的方式代码很丑,而且时间越多越不可控,耦合性高,经验丰富的工程师们,你们是如何优美的实现这个功能的?

解决方案

原理:这应该是观察者模式。需要被通知的相关用户就是观察者,通知者在感知评论、收藏等事件时通知所有相关的观察者。实现:就像LS各位说的,使用Spring AOP,面向切面编程,而且可插拔,所有耦合度很低。
解决方案二:
aop拦截,然后dwr向客户端推送
解决方案三:
用spring的aop,http://jinnianshilongnian.iteye.com/blog/1474325
解决方案四:
1 设计模式中的代理模式、访问者等模式2 aop方式,例如spring Aop可以针对方法前、方法后进行拦截这只是大部分人用到的,这样根本和你原来代码没有关系,实现耦合低总之不要在你原来的代码里进行修改,像你的消息,完全可以使用spring aop来做

时间: 2024-09-18 14:07:03

s2sh框架中如何优美的实现触发式消息系统?的相关文章

在Python的Flask框架中实现单元测试的教程

  在Python的Flask框架中实现单元测试的教程,属于自动化部署的方面,可以给debug工作带来诸多便利,需要的朋友可以参考下 概要 在前面的章节里我们专注于在我们的小应用程序上一步步的添加功能上.到现在为止我们有了一个带有数据库的应用程序,可以注册用户,记录用户登陆退出日志以及查看修改配置文件. 在本节中,我们不为应用程序添加任何新功能,相反,我们要寻找一种方法来增加我们已写代码的稳定性,我们还将创建一个测试框架来帮助我们防止将来程序中出现的失败和回滚. 让我们来找bug 在上一章的结尾

s2sh框架整合,hibernate无法执行删除问题

问题描述 s2sh框架整合,hibernate无法执行删除问题 dao层的代码 public void deleteDepartment(Serializable id,String delMode) { Department department=this.getDepartmentById(id); //通过页面出来的参书id,获得 这个对象 if("del_pre_relation".equals(delMode)){ Set users = department.getUser

介绍Python的Tornado框架中的协程异步实现原理

  介绍Python的Tornado框架中的协程异步实现原理        这篇文章主要介绍了简单介绍Python的Tornado框架中的协程异步实现原理,作者基于Python的生成器讲述了Tornado异步的特点,需要的朋友可以参考下 Tornado 4.0 已经发布了很长一段时间了, 新版本广泛的应用了协程(Future)特性. 我们目前已经将 Tornado 升级到最新版本, 而且也大量的使用协程特性. 很长时间没有更新博客, 今天就简单介绍下 Tornado 协程实现原理, Tornad

Caliburn Micro 框架中Windows Phone 8使用研究(三)神奇的墓碑处理

背景 Windows Phone 8 开发过程中Tombstone的处理真是让我们又爱又恨,它能让程序看起来一直在运行.但处理墓碑却是个很麻烦的事情,传统的方式我们需要在程序Deactived事件触发后,将需要保存的状态放到State中,然后用户回来后再加载出来.而如果我们的程序采用MVVM架构,情况会更复杂,有多复杂相信每个人都有所体会.话不多说,让我们继续看CM框架中神奇的墓碑处理. 从简单的代码开始: 在测试页面,我们添加一个TextBox起名为Name: 然后在ViewModel中添加N

深度学习框架中的魔鬼:探究人工智能系统中的安全问题

ISC 2017中国互联网安全大会举办了人工智能安全论坛. 我们把论坛总结成为一系列文章,本文为系列中的第一篇. 深度学习引领着新一轮的人工智能浪潮,受到工业界以及全社会的广泛关注. 虽然大家对人工智能有很多美好的憧憬,但是现实是残酷的 - 随着一批深度学习应用逐渐开始变成现实,安全问题也渐渐显现出来. 人工智能应用面临来自多个方面的威胁:包括深度学习框架中的软件实现漏洞.对抗机器学习的恶意样本生成.训练数据的污染等等.这些威胁可能导致人工智能所驱动的识别系统出现混乱,形成漏判或者误判,甚至导致

ssh-SSH框架中的过滤器,拦截器,监听器的作用和执行顺序

问题描述 SSH框架中的过滤器,拦截器,监听器的作用和执行顺序 如题,网上搜了一些资料看了一下,还不是很清楚,求各位大神指导 解决方案 http://www.cnblogs.com/tonyY/p/5168836.html 解决方案二: 首先,过滤器是在请求到达Server端之前执行的,或者响应结果到达客户端之前.功能是在服务器和客户端中间增加了一个中间层(类似于外观模式中间也是加了一层~~),可以对两者之间的交互进行统一的处理,每一个客户端提交的请求都需要通过过滤器的处理, 然后再进行其他的操

ENode 1.0 - 事件驱动架构(EDA)思想的在框架中如何体现

开源地址:https://github.com/tangxuehua/enode 上一篇文章,我给大家分享了我的一个基于DDD以及EDA架构的框架enode,但是只是介绍了一个大概.接下来我准备用很多一篇篇详细但不冗长的文章介绍每个点.尽量争取一次不介绍太多内容,但希望每次介绍完后都能让大家知道这个小点的设计思想,以及为了解决的问题. 好了,这篇文章,我主要想介绍的是EDA思想在enode框架中如何体现? 经典DDD的基于领域服务的实现方式 一般的应用程序,如果一个用户动作会涉及多个聚合根的修改

OEA ORM 框架中的冗余属性设计

OEA 框架提供了多种方式来优化分布式数据查询的性能,本篇将会说明如何以声明 OEA 冗余属性的方式,来实现轻量级的数据冗余,以减少关联查询次数及网络数据传输量,提高分布式应用程序性能.   冗余属性功能说明 OEA 冗余属性在框架层面提供了一种易用的机制,把指定冗余路径的关系对象中的属性值复制到本对象中,以解决关联查询.关联数据量等性能问题.应用开发人员只需要简单的定义一个冗余属性,而框架会自动完成对冗余属性的赋值.更新操作.   ORM 中的 N+1 问题示例 在进销存示例中,采购订单的列表

JavaScript设计模式入门和框架中的实践

在编写JS和组装代码的过程中,运用一定的设计模式可以让我们的代码更加优雅.灵活. 下面笔者就结合诸如redux的subsscribe.ES6的class.vue里面的$dispatch.jquery里面的on/off来给大家简单介绍下设计模式在这些库.语法和框架中的使用. 设计模式解决的问题 设计模式并不是很玄乎的知识,很多同学在编写JS代码的时候已经在不经意间用了不少设计模式了. 笔者认为把设计模式单独抽象出来探讨,就和算法中抽象出来冒泡.排序一样,是为了描述一种常用的JS pattern.