一、观察者模式定义

Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。

Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。

二、观察者模式的结构

Subject(被观察者):被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。

ConcreteSubject:被观察者的具体实现。包含一些基本的属性状态及其他操作。

Observer(观察者):接口或抽象类。当Subject的状态发生变化时,Observer对象将通过一个callback函数得到通知。

ConcreteObserver: 观察者的具体实现。得到通知后将完成一些具体的业务逻辑处理。

三、观察者模式的特点

侦听事件驱动程序设计中的外部事件

侦听/监视某个对象的状态变化

发布者/订阅者(publisher/subscriber)模型中,当一个外部事件(新的产品,消息的出现等等)被触发时,通知邮件列表中的订阅者

四、观察者模式的缺点

待整理

五、Demo

被观察者

/**

* @description:

* @auther: yangsj

* @created: 2019/3/21 17:25

*/

public class Blog extends Observable {

public void publishArtical(){

Artical artical = new Artical();

artical.setTitle("title");

artical.setCoutent("countent");

this.setChanged();

this.notifyObservers(artical);

}

}

观察者

/**

* @description:

* @auther: yangsj

* @created: 2019/3/21 17:28

*/

public class User implements Observer {

@Override

public void update(Observable o, Object arg) {

Artical artical = (Artical)arg;

System.out.println("title"+artical.getTitle() + " countent" + artical.getCoutent());

}

}

消息基类

package com.nchu.observer;

/**

* @description:

* @auther: yangsj

* @created: 2019/3/21 17:24

*/

public class Artical {

public String title;

public String coutent;

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getCoutent() {

return coutent;

}

public void setCoutent(String coutent) {

this.coutent = coutent;

}

}

客户端调用

/**

* @description:

* @auther: yangsj

* @created: 2019/3/21 17:30

*/

public class APP {

@Test

public void Test(){

Blog blog = new Blog();

blog.addObserver(new User());

blog.publishArtical();

}

}

六、UML类图

java设计模式观察者模式_Java设计模式(9)——观察者模式相关推荐

  1. java设计模式观察者模式_java设计模式--观察者模式

    观察者模式:又称发布-订阅(Publish/Subscribe)模式.我们先看一个例子,现在直播行业越做越大,许多人都有关注自己喜欢的主播,人们订阅某一个主播,当该主播开播时,给订阅他的人发布提示说他 ...

  2. java 设计模式 示例_Java设计模式–示例教程

    java 设计模式 示例 Design Patterns are very popular among software developers. A design pattern is a well- ...

  3. java 广播模式_Java设计模式——观察者模式的灵活应用

    灵感来源于一个猪队友给个人题目java 看到这个,我抓住的关键字是:任何子任务失败,要通知全部子任务执行取消逻辑.dom 这不就是消息广播吗?观察者模式!ide 干活 首先是收听者测试 package ...

  4. java观察者模式_Java设计模式之观察者模式详解

    观察者模式,是一对多的关系,一个主题对应多个观察者,当这个主题发生变化的时候,所有观察着这个主题的观察者都会接收到通知来获悉主题的变化. 在现实中我们也会遇到许许多多应用观察者模式的行为,比如电视的节 ...

  5. java设计模式教程_Java设计模式教程

    java设计模式教程 课程大纲 架构和计算机科学中的设计模式是记录特定专业领域中设计问题的解决方案的正式方法. 这个想法是由建筑师Christopher Alexander在建筑领域引入的,并已被修改 ...

  6. java 行为模式_java设计模式--行为模式

    前言 行为模式是描述多个类与对象之间通过协作共同完成单个对象无法单独完成的任务. 行为模式分为: 类行为模式通过集成在类之间分派行为 对象行为模式通过组合或聚合在对象之间分配行为 行为模式: 模板方法 ...

  7. java外观设计修改_Java设计模式之外观模式和装饰器模式的设计(精选)

    前言 本篇来学习下结构型模式的外观模式和装饰器模式. 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接 ...

  8. java 反射模式_java 设计模式——反射机制的应用

    Java反射机制是指:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言 ...

  9. java 对象工厂_Java设计模式之--工厂方式

    在分析工厂模式之前,我们先看看普通模式下的Java三层结构. Controller(表现层)-Service(业务层)-Dao(持久层.数据库连接层),基于此三层结构完成JavaWeb相关业务. 假设 ...

最新文章

  1. 简析 .NET Core 构成体系
  2. 乘风破浪的前端小姐姐,是如何一步步走向成功的?
  3. linux下安装与部署redis
  4. Linux宝库上线,有木有get到你?
  5. 地籍图宗记注记标注实现
  6. CefSharp实战演示
  7. 计算机图形学设计线宽代码,计算机图形学线宽和线型处理.ppt
  8. 代码签名证书有哪些产品
  9. 蓝桥杯2020年第十一届省赛真题-走方格-java
  10. 梅特勒托利多电子秤显示EEP服务器错误,托利多电子秤故障排除和维修方法
  11. Hashcat密码破解攻略
  12. mysql表分区 php_MySQL——表分区
  13. python编写程序模拟硬币的投掷、假设0表示硬币的反面_Python.习题四 循环结构
  14. 64位的GCC 编译32位程序
  15. 忆阻器与深度学习-忆阻加速神经网络
  16. 正益王国春:AppCan 为HTML5移动创新与创业而生
  17. SystemUI常见问题修改方法
  18. Java课程设计-家庭财政管理软件
  19. 振荡电路的用途和振荡条件
  20. scrapy框架开发爬虫实战——css语法

热门文章

  1. 在 Red HatAS4下添加网卡驱动!!
  2. PHP 表单的提交完美示例
  3. ISA Server 2006的全自动无人职守安装
  4. py-faster-rcnn GPU跑demo预测分数低
  5. 浅析数据库case when 用法
  6. reactjs redux入门完整版示例:store reducer getState dispatch subscribe action
  7. kafka可视化客户端工具(Kafka Tool)的基本使用
  8. Django 3.2.5博客开发教程:URL与视图函数
  9. linux解决root用户无法ssh localhost的问题
  10. sublime关于行操作的快捷键:如快速复制整行等