设计模式---观察者模式介绍与理解:

观察者模式原理:类似于定牛奶业务

1. 奶站,subject:登记注册,移除,通知(register,remove,notify)

2. 用户,observer:接收输入

观察者模式:对象之间多对一依赖的一种设计模式,被依赖的对象称为subject,依赖的对象为observer,subject发生变化时通知observer对象。

观察者模式实例演示:

Java内置观察者:

Observable(类而非接口):已经实现了:注册移除通知。不能多重继承。(在通知之前要setChanged())

Observer(接口)这样才能多重实现

观察者模式关键点:

1. 松耦合:对象之间的关系应该是松耦合。对象之间交互的过程属于松耦合状态,可以相互交互,但是交互的过程中,相互之间不存在依赖关系。

他们之间是异步的,比如说:不需要对方传递过来的对象具体是怎么实现的。(观察者模式)Observer和Subject之间互不影响,其中一个崩溃不影响另外一个的正常工作。

2. 高内聚:对象内部之间的关系应该是高内聚的。

3. 隔离影响:发生错误或者的异常的时候降低影响。

从观察到通知的转变:

Observer本来的意思叫做观察者,但实际上Observer角色并不是主动的去观察,而是被动的接收来自subject角色的通知。因此,Observer模式也被称为publish-subscribe模式(发布-订阅模式)

Demo请参考:https://github.com/linhj-james/DesignPattern

转载请注明出处!

设计模式---观察者模式介绍与理解相关推荐

  1. 设计模式——观察者模式详解

    0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...

  2. 设计模式概述 以及 23种设计模式的介绍

    设计模式概述(Design pattern): 设计模式:代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众 ...

  3. java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解

    Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...

  4. 设计模式 | 观察者模式及典型应用

    本文主要内容: 介绍观察者模式 微信公众号的发布/订阅示例 观察者模式总结 分析观察者模式的典型应用 JDK 提供的观察者接口中的观察者模式 Guava EventBus 中的观察者模式 JDK 委托 ...

  5. Java设计模式——观察者模式

    转自:http://www.cnblogs.com/shamgod/p/4588557.html 一.概述 childe类中的是关联监听者dad的,若要再增加监听者,会很不方便,且要修改代码.好的方法 ...

  6. java设计模式-观察者模式

    观察者模式介绍: 观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种.在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知.这通常透过呼叫各观察者所提 ...

  7. 设计模式-观察者模式(Observer)-Java

    设计模式-观察者模式(Observer)-Java 目录 文章目录 1.前言 2.示例案例-多人联机对战游戏的设计 3.观察者模式概述 3.1.观察者模式定义 3.2.观察者模式结构 3.3.观察者模 ...

  8. Python设计模式-观察者模式

    Python设计模式-观察者模式 代码基于3.5.2,代码如下; #coding:utf-8 # 观察者设计模式class observerInterface():def update(self,va ...

  9. [Head First设计模式]山西面馆中的设计模式——观察者模式

    原文:[Head First设计模式]山西面馆中的设计模式--观察者模式 系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 引言 不知不自觉又将设计模式融入生活了,吃个饭也 ...

最新文章

  1. 经典文章之java 操纵Excel[转]
  2. NLP(1) | 词向量one hot编码词向量编码思想
  3. glibc-2.23学习笔记(二)—— free部分源码分析
  4. Mybatis_day4_Mybatis的延迟加载
  5. c语言冒泡排序的两种实现方式,c语言中冒泡排序的实现原理是什么?
  6. PyQt5多线程刷新界面防假死
  7. pycharm添加conda虚拟环境
  8. 代码重构的方法和经验_实战篇:一个核心系统 3 万行代码的重构之旅
  9. java零基础从入门到精通(全)
  10. 承诺型与愿景型,什么样的OKR适合你?
  11. bootstrap之文字排版
  12. 管理,就是做减法!聊聊 “奥卡姆剃刀定律”
  13. 我在云栖社区读硕士,大数据专业
  14. [SSL_CHX][2021-8-20]最大质因子序列
  15. 讯飞机器翻译质量评估挑战赛Baseline(PaddlePaddle)
  16. (十二)幸福之家 - 1
  17. 2021-2027全球与中国测试夹具市场现状及未来发展趋势
  18. 【Unity】刮刮乐效果(擦除图片像素值)
  19. 联想微型计算机重装,联想一体机电脑重装系统教程 一体机电脑重装系统
  20. 2021年危险化学品经营单位主要负责人考试资料及危险化学品经营单位主要负责人新版试题

热门文章

  1. JQuery Datatables editor进行增删改查操作(一)
  2. 可汗学院 统计学(12到34集)
  3. java怎么让1的数据2可以拥有,【如何让代码变“高级”(二)】-这样操作值得一波666(Java Stream)(这么有趣)...
  4. python提示对话框自动关闭_Python实现定时自动关闭的tkinter窗口方法
  5. 2345王牌浏览器网页加载慢怎么办 网页加载慢解决办法
  6. IE11浏览器一个窗口打开多个页面设置方法
  7. jeecg扩展字段,非实体属性
  8. 如何右键文件夹以Sublime 打开
  9. SpringBoot框架中各层(DTO、DAO、Service、Controller)理解
  10. Java基础篇1——变量与数据类型