[原创作品]观察者模式在Web App的应用

(转载请注明:http://zhutty.cnblogs.com, 交流请加群:164858883)

  在软件工程中,有一条重要的原则就是:高内聚低耦合。这是评定软件的设计好坏的一个标准。所谓高内聚,指的是一个模块内各个元素关联紧密,共同完成一个核心业务。低耦合,指的是各个模块之间依赖松散。创建低耦合模块,这一过程也成为解耦。

  观察者模式正是低耦合的软件设计,也称为发布(publish )-订阅(Subscribe)模式。什么是观察者模式?举个栗子:王二小在山上放牛,突然他看见了鬼子到了村外,于是他把山上的烽火台点燃了。村民看见狼烟,都把自家的粮食啥的藏了起来;花姑娘看见狼烟,赶紧换上了庄稼汉的着装;民兵把村口的地雷挂上了弦,扛上枪埋伏在村口;政委组织村民撤退;树上的乌鸦继续敷蛋。这就是生活中的观察者模式,王二小负责点着烽火台后,就没他事了,村里人看见信号后,各自做出了响应。此案例用例图如下:

  从用例图可以看出,每一个参与者相互独立,各自完成独立业务,即使他们都同时响应‘狼烟’,彼此互不影响。

  那么在Web项目中如何应用观察者模式呢?在直播系统中,众多信息依赖于socket实时通信,在传统做法中,socket消息推送回来后,判断消息类型,之后去调用响应的业务处理方法。代码类似如下:  这样的做法负责处理socket消息模板将依赖所有处理socket的A,B。。。其中的switch case将不断堆积。每个业务,比如A弃用了,我们在删除A文件的同时,还要在socket文件进行对应的操作,这样耦合程度就很高了。在业务庞大起来的时候还是会带来一定的维护成本。

  在这个情况下,其实我们可以采用广播机制,广播机制就是观察者模式的一种体现。socket模块在接收到推送的消息时,发送一条广播,将socket消息类型和数据广播出去。每个业务模块监听这个广播消息,然后完成各自的业务处理。sochet模块和业务模块达到了解耦的效果,更易于维护,性能更加稳定。

时间: 2024-08-05 23:08:05

[原创作品]观察者模式在Web App的应用的相关文章

[原创作品]web网页中的描点

因为近来在从事web前端开发的工作,所以写的文章也都是关于web这一块.以后将分享算法和web高级编程的内容,很多公司的web前端不够重视,以为是很low-level,给的待遇也很一般,其实,这都是很狭隘的理解.软件开发是一种很谨慎的工作,每一个环节都需要足够的重视.好了,不扯淡.需要扯淡的,点击左边信息栏加群按钮. 今天分享的内容是网页描点效果,就是在网页滚动到某个位置时,菜单有相应的变化.如图, 就是在滚动时,菜单会有相应的选中效果,点击菜单时,定位到网页内容. 菜单代码: 1 <ul cl

] 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题

] 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题 标签: myeclipsejavawebWeb App Libraries 2013-10-16 10:54 5032人阅读 评论(0) 收藏 举报  分类: 开发环境 版权声明:本文为博主原创文章,未经博主允许不得转载. 在myeclipse中新建的Javaweb工程,lib中的jar包无法自动加载工程,不能像eclipse那样使用Web App Libraries. 即使添加了Web App

Progressive Web App

下一代 Web 应用? 近年来,Web 应用在整个软件与互联网行业承载的责任越来越重,软件复杂度和维护成本越来越高,Web 技术,尤其是 Web 客户端技术,迎来了爆发式的发展. 包括但不限于基于 Node.js 的前端工程化方案:诸如 Webpack.Rollup 这样的打包工具:Babel.PostCSS 这样的转译工具:TypeScript.Elm 这样转译至 JavaScript 的编程语言:React.Angular.Vue 这样面向现代 Web 应用需求的前端框架及其生态,也涌现出了

css3实现web app翻页过度效果

最近在开发web app页面,要实现滑动翻页,一开始实现的效果是无任何过渡效果的,可是这样子的话页面会闪跳一下,用户体验非常不好.于是我们主管叫我用jquery mobile,可是用了这个库之后,问题来了,跳转到的目标页面,无法加载目标页面引入的外部css文件,最后用css3完美地解决了这个问题: .pt-page-moveToLeft { -webkit-animation: moveToLeft .6s ease both; -moz-animation: moveToLeft .6s ea

做 H5 领域的 DRM?APICloud 推出 Web App 加密技术同时发布国际版

在今年十月获得北极光创投领投的 500 万美金 A 轮融资之后,当时提到的APICloud 国际版在近期于美国发布.于此同时,他们推出了针对 HTML5 网页应用的加密机制,以此帮助开发者防范抄袭和盗版. APICloud 国际版目前为止仅提供英文界面,面向全球用户开放.他们希望通过开放自有平台及其他合作伙伴的模块化组件帮助希望开展中国业务的外企提供本地化服务和技术支持.在此之外,APICloud 国际版会在后续接入海外服务,帮助国内开发者面向海外扩张. 此前,因为主流浏览器自带开发工具,同时网

如何开始一个模块化可扩展的Web App(转)

原文链接:http://avnpc.com/pages/start-a-modular-extensible-webapp 日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性使用 2.5 许可协议』进行许可. 虽然从没有认为自己是一个前端开发者,但不知不觉中也积累下了一些前端开发的经验.正巧之前碰到一道面试题,于是就顺便梳理了一下自己关于Web App的一些思路并整理为本文. 对于很多简单的网站或Web应用来说,引入jQuery以及一些插件,在当前页面内写入简单逻辑已经

PWA(Progressive Web App)入门系列:(一)PWA简介

前言 PWA做为一门Google推出的WEB端的新技术,好处不言而喻,但目前对于相关方面的知识不是很丰富,这里我推出一下这方面的入门教程系列,提供PWA方面学习. 什么是PWA PWA全称Progressive Web App,直译是渐进式WEB应用,是 Google 在 2015 年提出,2016年6月才推广的项目.是结合了一系列现代Web技术的组合,在网页应用中实现和原生应用相近的用户体验. 所谓的P(Progressive)这里有两层含义,一方面是渐进增强,让WEB APP的体验和功能能够

PWA(Progressive Web App)入门系列:(一)PWA简单介绍

前言 PWA做为一门Google推出的WEB端的新技术,长处不言而喻.但眼下对于相关方面的知识不是非常丰富.这里我推出一下这方面的新手教程系列.提供PWA方面学习. 什么是PWA PWA全称Progressive Web App,直译是渐进式WEB应用,是 Google 在 2015 年提出,2016年6月才推广的项目.是结合了一系列现代Web技术的组合.在网页应用中实现和原生应用相近的用户体验. 所谓的P(Progressive)这里有两层含义,一方面是渐进增强,让WEB APP的体验和功能能

怎么判断一个APP是原生APP、混合APP还是WEB APP ?

1.看断网情况 通过断开网络,刷新页面,观察内容缓存情况来有个大致的判断,可以正常显示的就是原生写的,显示404或者错误页面的就是html页面. 2.看布局编辑 3.看复制文章的提示,需要通过对比才能得出结果. 比如文章资讯页面可以长按页面试试,如果出现文字选择,粘贴功能的是H5页面,否则是native原生的页面. 有些原生APP开放了复制粘贴功能或者关闭了,而H5的CSS屏蔽了复制选择功能等情况,需要通过对目标测试APP进行对比才可知. 在支付宝APP.蚂蚁聚宝是可以判断的. 4.看加载的方式