DP讨论——观察者模式

学而时习之,温故而知新。

一般介绍的一个主题类多个观察者类

敌人出招(使用场景)

多个对象依赖一个对象的状态改变——比如业务数据信息统计展示出来,当业务中有这样的关系时你出什么招?

你出招

这个时候就要用观察者模式这招了!

2个角色

分为啥主题和观察者角色。
我觉得主题就是干活的,打工仔,为观察者干活。
一对多。一个主题,多个观察者——就像一个开发人员对多个项目经理——项目经理拿小皮鞭抽呀抽呀,受不了。

招式特点

主题对象维护一个观察者列表,提供注册销毁通知方法。另外一个特点是观察者注册到主题的指针一般是接口类的指针,这样隐藏观察者的内部实现。## 变种:多个主题类,一个观察者类。
而主题类只有一个,它内部管理了一个线程或者借用线程池,根据主题变化,通知各个观察者。

变种:多个主题类,一个观察者类

变种介绍

还有一种关系,是多个主题类一个观察者,比如统计系统各个业务的数据,汇总到一个类(或者数据结构)中,然后发送数据到客户端进行可视化展示。这个时候,主题也就是内容可能分布在多个类中,但是统一汇总到一个类——这就要求多个主题类而只有一个观察者类。

这个是不是变种?还是说观察者模式不仅限于教科书上的,现实中是不断发展变化的?每种设计模式都是这样的?

变种组成

多个主题类一个观察者类,然后统计线程放在哪里呢?可以放到外面,放到显示业务里,显示业务线程里从观察者类里get所需要的主题,然后发送出去——目的地可以是本地也可以是远端,因业务而定。

那么这就要求,观察者是个单例——单例模式也就来了。

参考代码

参考代码

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值