位置: 编程技术 - 正文

设计模式In Android——观察者(Observer)模式_1(设计模式具有的优点)

编辑:rootadmin

推荐整理分享设计模式In Android——观察者(Observer)模式_1(设计模式具有的优点),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:设计模式有哪些,设计模式面试题 java,设计模式七大原则,设计模式原则,设计模式原则,设计模式七大原则,设计模式23模式介绍,设计模式六大原则,内容如对您有帮助,希望把文章链接给更多的朋友!

写在前面的话: 1,记录学习的过程,希望能够坚持下去。 2,代码Based On Android4.4;主要参考书籍《Head First 设计模式》

什么是观察者模式? 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

怎么设计一个观察者模式的程序? 确定两个核心对象:(《Head First》Chapter 2) a.主题(Subject.java,WeatherData.java):要实现register()/unregister(),notify()方法 b.观察者(Observer.java,CurrentConditionDisplay.java/StatisticsDisplay.java):要实现update()方法

确定这两个对象之间的关系: 主题对象管理某些数据,一旦数据发生改变,会主动向观察者进行通知,然而观察者不必向主题进行索取。 主题并不知道具体的观察者是谁,这是它们之间的关系。

原则

观察者模式是体现了“针对接口编程,而非针对实现编译”; 所以针对接口编译,我认为是把接口(Subject)或者接口的实现(WeatherData)作为参数,如public CurrentConditionsDisplayer(Subject weatherData)使用观察者模式的布告板可以动态的添加(register)。为了交互对象之间的松耦合设计而努力设计模式In Android——观察者(Observer)模式_1(设计模式具有的优点)

静态类图

代码实现 在测试类中,实例化一个WeatherData

在CurrentConditionsDisplayer的构造方法中,会调用WeatcherData.registerObserver方法,把已经注册进去。 在WeatherData.java实现registerObserver方法,就是把

在进行数据传递的方法notify()方法中,会遍历ArraryList逐个调用update()方法通知。 WeatherData.java

CurrentConditionsDisplayer.java中去显示

代码下载:代码

下节学习一下在Android里面,哪里使用Observer模式。

点击LinearLayout使用selector改变TextView字体颜色 LinearLayoutandroid:clickable=trueandroid:focusable=trueTextViewandroid:duplicateParentState=true/android:textColor=@drawable/selector_setting_txt/LinearLayout?xmlversion=1.0encoding=utf-8?selectorxml

android图表ichartjs android之ichartjs图表1.

JDK/ADT Android开发环境搭建 1.1JDK环境搭建安装Windows7(如果已有,可以跳过)去

标签: 设计模式具有的优点

本文链接地址:https://www.jiuchutong.com/biancheng/381093.html 转载请保留说明!

上一篇:android内存泄露优化总结(android内存泄露监测)

下一篇:点击LinearLayout使用selector改变TextView字体颜色(linearlayout布局怎么设置)

  • 外籍人员税收优惠政策
  • 固定资产投资子公司交增值税税吗
  • 发票印不上字还能用吗?
  • 小企业会计准则和企业会计准则的区别
  • 外商投资企业采取发包、出租经营
  • 累计所得税前净现金流量计算公式为
  • 房地产项目结转条件
  • 税费返还如何处理
  • 租金收入个人所得税
  • 企业所得税年报补报
  • 小企业研发费用科目代码多少合适
  • 发票未到货已到怎么入账
  • 审计调整分录如何写
  • 增值税发票作废有什么损失
  • 增值税普票税额
  • 会议费增值税专用发票税率
  • 烟草企业发生的广告和宣传费在当年营业收入15
  • 企业股东变更需要哪些手续
  • 房地产企业扣除项目
  • 产品调试费计入什么科目
  • 债权性投资和权益性投资的区别
  • 手动滑屏怎么操作
  • 网页不播放声音怎么设置
  • 赠与合同的法定撤销和任意撤销
  • linux中rm命令详解
  • 母公司向子公司发行面值100万元、期限为三年
  • PHP:pg_field_type()的用法_PostgreSQL函数
  • 电脑麦克风没声音是什么原因
  • PHP:date_default_timezone_set()的用法_Date Time函数
  • thinkphp config
  • 阿根廷圣克鲁斯省
  • 合营企业合营方
  • springboot和vue结合
  • php的时间戳
  • 非居民纳税人工资个人所得税税率
  • 开票和不开票的销项税额怎么算
  • js方案
  • 织梦相关文章调用
  • 三方转账协议各方怎么记账
  • 地方教育费附加会计分录怎么做
  • 未收回的货款属于什么会计科目
  • 会计的借记和贷记什么意思
  • 购买无形资产的入账价值包括增值税吗
  • mysql中You can’t specify target table for update in FROM clause错误解决方法
  • mysql密码忘了怎么办?
  • 园林绿化企业属于什么行业
  • 有限合伙企业分配原则
  • 中小型企业应收账款风险管理
  • 房地产企业城建税和教育费附加怎么算
  • 认证固定资产发票如何入账
  • 3%减按1%征收增值税政策2022年
  • 库存商品盘盈和盘亏区别
  • 企业录用失业人员补贴
  • 生产成本直接人工怎么算
  • 简易征收计算企业所得税怎么算
  • 无形资产入股交税吗
  • sql server删除重复数据保留一条
  • win7旗舰版系统激活码
  • win10自带的音乐播放器groove如何设置
  • 判断自己的脸型
  • w3dbsmgr.exe是什么进程
  • windows软件删除
  • Windows任务计划程序服务
  • ie11forwindows10
  • ubuntu查cpu信息
  • 如何解决windows不是正版的问题
  • 拉伸设置
  • unity3d第一人称射击游戏教程
  • nodejss
  • logcat read failure
  • unity移动脚本代码
  • jquery easyui从零开始学pdf
  • unity3d怎么用
  • jq 判断元素是否存在
  • 南通税务网站
  • 内蒙古国家税务局网上电子税务局官网
  • 河南地税申报表怎么填
  • 衡阳地税局的地理位置
  • 上市公司季报有哪些内容
  • 非中山户籍学生可以自己买医保吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设