敏捷开发之观察者模式

事件响应是观察者模式的核心点。

我们在某个基础类中定义这么一个成员变量,该成员变量的属性值为Get和Set,具备默认值,在Set下赋值后,加上一行代码用来触发事件响应。当外部程序,为该属性值赋予新值时,将会触发事件响应,做出相应操作。俗称观察者模式。

MVP加观察者模式是敏捷开发的一个很好组合,顺道在这里援引一名工友的博客:http://blog.csdn.net/u010937230/article/details/60479613

MVP模式简要介绍

MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。 
MVP模式的作用 : 
1、分离了视图逻辑和业务逻辑,降低了耦合 
2、Activity只处理生命周期的任务,代码变得更加简洁 
3、视图逻辑和业务逻辑分别抽象到了View和Presenter的接口中去,提高代码的可阅读性 
4、Presenter被抽象成接口,可以有多种具体的实现,所以方便进行单元测试 
5、把业务逻辑抽到Presenter中去,避免后台线程引用着Activity导致Activity的资源无法被系统回收从而引起内存泄露和OOM 
6、UI接口中定义了更新UI的方法,presenter接口中定义了业务逻辑方法,我们从这两个接口文件中就可以一目了然地看到我们有哪些逻辑操作,有哪些UI更新方法,功能一目了然。 

观察者模式简要介绍:

概述: 
??有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

  1. 解决的问题: 
    ??将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。观察者就是解决这类的耦合关系的。
  2. 模式中的角色: 
    ??3.1抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象。 
    ??3.2具体主题(ConcreteSubject):将有关状态存入具体观察者对象;在具体主题内部状态改变时,给所有登记过的观察者发出通知。 
    ??3.3 抽象观察者(Observer):为所有的具体观察者定义一个接口,在得到主题通知时更新自己。 
    ??3.4具体观察者(ConcreteObserver):实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题状态协调。
  3. 模式解读:
  4. 4.1 观察者模式的类图
时间: 2024-10-10 02:08:24

敏捷开发之观察者模式的相关文章

敏捷开发

学习内容: 敏捷开发 Agile Development 是一种软件开发流程,开发方法,能够知道我们按照规定的环节一步步的去完成项目的开发任务,主要驱动核心是人,采用的是迭代式的开发. 是相对于瀑布开发模式的缺点改进的一种开发模式,就是把一个大项目切分成多个子项目,然后分别开发.测试. 是以用户的需求变化为核心,采用迭代和循序渐进的方式进行软件开发. 四句开发宣言: 个体和互动  胜过     流程和工具 可用的软件    胜过     详尽的文档 客户合作 胜过     合同谈判 响应变化  

利用敏捷开发的原则开发自己的大学生校园博客系统

  敏捷开发原则 我们的做法 1 尽早并持续交付有价值的软件以满足顾客需求 软件暂时未完成,但目前已经交付某些文档,可以通过文档与用户进行交互. 2 欢迎需求的变化,并利用这种变化来提高用户的竞争优势 不时向同学询问或自我思考看自己所要做的能否使大学生满意. 3 经常发布可用的软件,发布间隔可以从几周到几个月,能短则短 由于我们的项目是要求在一个月内进行交付,所以我们并没有进行软件的交付,但是我们每周都会交一些设计文档,对项目及完成进度进行说明. 4 业务人员和开发人员在项目开发过程中应该每天共

Project Management: 敏捷开发纵横谈

摘要:在IT界中,“敏捷”是一个很酷的词汇,“敏捷”的相关理论可谓铺天盖地.“敏捷”一词实质没有统一定义,各家有自家的说法,本教程将让你了解“敏捷”的来龙去脉,抓住“敏捷”本质,并能在工作中实践“敏捷”. 特别声明:如需转载此文,请给出指向本网站的连接,如下:作者:张传波摘自:http://www.umlonline.cn如不能按此要求,请不要转载此文. 大纲:“敏捷”陷阱为什么会有“敏捷”这个说法?极限编程敏捷开发RUP敏捷开发的实质是什么?如何才能敏捷起来? 正文: “敏捷”陷阱 小甲想到某

瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别

瀑布式开发.迭代开发,区别[都属于,生命周期模型]         两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说. 传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好.特别是前期阶段,设计的越完美,提交后的成本损失就越少.我现在从事的外包项目就是这样的流程. 迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目

互联网公司的“敏捷开发”流程是怎么样的,每个职位的角色和分工是什么?

作者:暗灭 第一   为什么需要敏捷开发. 在几万年以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了半年多,方案设计做了半年多,开发了三年多,测试了半年多,修改Bug用了半年多.总计花了很长很长的时间,然后上线后发现有很多需求已经不存在了,同时又出现了很多新的需求. 怎么办?继续改.这一改又是半年多的时间过去了.马丹用户的需求还再改,怎么办? 这是困扰软件开发项目的最大的问题,越大的项目,参与的人越多,风险越大.文档越规范,维护起来的难度就越高,导致项目中遇到的问题越来越多.

敏捷开发实施方案

今天把前段时间,给公司讲解敏捷开发流程的PPT文档发出来.由于近来比较喜欢用Markdown编写文档,发现博客园不支持Markdown编辑,有点失望.小小吐槽,O(∩_∩)O~ 敏捷开发实施流程 敏捷开发实施流程 1.迭代计划 2.每日晨会 3.看板 4.迭代验收 (ShowCase) 5.迭代回顾会议 6.敏捷使用管理工具 7.敏捷开发总结回顾 8.瀑布模式与敏捷开发区别 敏捷开发的最大特点是:积极响应用户的需求,快速高质量的交付软件; 其核心是:以人为本,发挥人的主观能动性. 1.迭代计划

敏捷开发系列文章目录

敏捷开发在国内是不是只是一个理想化的工作环境? 经常有人问,你们搞敏捷开发工作量是由开发人员自己估的,而不是由经验丰富的技术主管估的,他们自己肯定会把工作量估得非常大,那什么时候项目才做得完?你们每天开那么多会,怎么不把时间放在好好写代码上面?一个迭代这么短的时间既要做设计.又要编码.还要测试,这么急着做出的东西质量肯定不高.系统设计肯定得经验丰富的老手做更靠谱.每当我听到有人说这些问题,我就知道他肯定没有真正的认识敏捷开发,如果真的有实践过,自然就会发现这些问题根本就不是问题,只是杞人忧天而已

什么是敏捷开发?(扫盲)

敏捷开发的4句宣言 个体与交互 胜过 过程与工具 可以工作的软件 胜过 面面俱到的文挡 客户协作 胜过 合同谈判 响应变化 胜过 遵循计划 最近一直听人说"敏捷开发",一脸懵逼,根本不知道什么是敏捷开发,然后百度了一下,上面四句是比较普遍的总结! 什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的

敏捷开发和极限编程

敏捷软件开发(Agile software development): 它是一种用来应对软件需求的不断变更的新的软件开发技术. 强调整个开发过程中业务人员和开发人员紧密协作在一起,面对面交流,频繁性的交付软件,随时应对需求的变更.追求在尽可能短的时间内交付较小的可用的功能,并在整个项目周期中持续改善和增强. 极限编程(Extreme programming,简XP): 极限编程是敏捷开发中最富有成效的几种方法学之一. XP是一种近螺旋式开发方法,它将复杂的开发过程分解成一个个小的开发周期,对需求