电影无间道很多人都看过,讲的是关于黑社会与警局卧底的故事。
我们今天就聊一下无间道和面向对象的观察者模式到底有什么关系。

//被观察者public interface Observable{void notifyEverybody(); //通知所有人
    }//曾志伟 扮演的 黑社会老大 韩琛public class HanLaoda implements Observable {ArrayList<Observer> observerList;//卧底们(除了梁朝伟还有很多卧底,比如陈朝伟、张朝伟)public void notifyEverybody(){for (Observer item : observerList) {item.reportWangSir();}}//韩老大为了扩充势力,只管招小弟进来,但他不知道招进来的是卧底public void addObserver(Observer observer){observerList.add(observer);}//做违法事情public void doWeifa(){//卧底们一旦发现韩老大要做违法事情,就开始秘密通知警方
            notifyEverybody();}}//观察者public interface Observer{//卧底 一旦发现有违法交易,立马做出行动。报告给 黄秋生扮演的 王Sir。void reportWangSir();}//梁朝伟 扮演的 梁永仁 是警局安插到黑社会的卧底public class LiangChaowei implements Observer{public void reportWangSir(){//报告给王Sir
        }}//陈朝伟public class ChenChaowei implements Observer{public void reportWangSir(){//报告给王Sir
        }}//张朝伟public class ZhangChaowei implements Observer{public void reportWangSir(){//报告给王Sir
        }}public class Client{public static void main(){HanLaoda han = new HanLaoda();//韩老大为了扩充势力,只管招小弟进来,但他不知道招进来的是卧底han.addObserver(new LiangChaowei());han.addObserver(new ChenChaowei());han.addObserver(new ZhangChaowei());//做违法事情
            han.doWeifa();}}

那观察者模式在什么情况下使用呢?
观察者可以实现消息的广播,一个消息可以触发多个事件,这是观察者模式非常重要的功能。

使用观察者模式也有个重点问题要解决: 
广播链的问题
如果你做过数据库的触发器,你就应该知道有一个触发器链的问题,比如表 A 上写了一个触发器,
内容是一个字段更新后更新表 B 的一条数据,而表 B 上也有个触发器,要更新表 C,表 C 也有触发器…,完蛋了,
这个数据库基本上就毁掉了!我们的观察者模式也是一样的问题,一个观察者可以有双重身份,即使观察者,
也是被观察者,这没什么问题呀,但是链一旦建立,这个逻辑就比较复杂,可维护性非常差,根据经验建议,
在一个观察者模式中多出现一个对象既是观察者也是被观察者,也就是说消息多转发一次(传递两次),这还是比较好控制的。

转载于:https://www.cnblogs.com/zhuojun/p/5806540.html

《无间道》观察者模式相关推荐

  1. [hihoCoder]无间道之并查集

    题目大意: #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之, ...

  2. #1066 : 无间道之并查集

    #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之,小Hi和小H ...

  3. 外贸企业员工上演”无间道” 商业秘密保护乏力

    外贸企业高薪聘请技术.业务人员并悉心培养,不料企业员工却带着公司的技术图纸.客户资料扬长而去,还挖起了老东家的墙角.最近,不少外贸企业频频遭遇员工的"无间道",企业直呼应对乏力. ...

  4. 世界药王再遭“无间道”,药企如何保护自己的数据

    多家药企屡遭无间道 2021年3月,美国知名生物制药公司艾伯维在一项新的诉讼中指控Alvotech公司招募的艾伯维的前员工Rongzan Ho窃取该公司药品修美乐的机密. 艾伯维的指控不是空穴来风,提 ...

  5. 对于爱情的透彻性理解:恋爱变成一场无间道...

    对于爱情的透彻性理解:恋爱变成一场无间道... 没有一个男人,不是在一个女人的怀抱里长大的.他的狂躁,他的冷漠,他的不安分,他的稚气,皆是靠一个女人抹去. 谁都会有被收服的一天.一物降一物,卤水点豆腐 ...

  6. 无间道中毒综合征(影迷朋友过来看看)

    台词篇: 1.在习惯性说出"过了明天就好了"这句话后,马上来个"呸呸呸!瞧我这嘴--" 2.每次发完牢骚后,都怪异地看着对方说:"吓着你了?对不起-- ...

  7. 【年度大戏】勒索”嘿客“无间道之战

    [年度大戏]勒索"嘿客"无间道之战 为了保护多位表演群众,以下内容均以化名出现,所有图片取自对当事人的报告和贴吧原贴,历史群消息中,并均对ID打码处理(25仔的就不打了),本文只陈 ...

  8. 《无间道》中的“盲签字”

    电影<无间道>里,梁朝伟饰演的角色陈永仁很尴尬,警校没毕业就被派到黑社会做卧底,到斗争最激烈的时候,他的身份证明被黑帮打入警局的刘建明(刘德华饰)彻底删除了,与陈永仁单线联系的黄督察(黄秋 ...

  9. 车行竟有内鬼!两男子上演无间道狂赚1500万

    "给我一个机会." "怎么给你机会?" "我以前没得选,现在想做一个好人." "好啊,你去和法官说,看他让不让你当好人." ...

最新文章

  1. js中的offset函数和position
  2. 当查找名字的时候通过外围作用域向外查找(如何理解)
  3. (转)二分图最大匹配的König定理及其证明
  4. margin 塌陷bug 触发bfc
  5. 要写related_name的两种情况
  6. JavaScript中各存在性函数
  7. unix学习笔记1 read () write()
  8. StringBuilder 详解 (String系列之2)
  9. Android GIS开发系列-- 入门季(15) 网络图层加载
  10. python按内容分割txt文件_python 读txt文件,按‘,’分割每行数据操作
  11. oppoa59s计算机功能,OPPO A59s怎么开启OTG功能-OPPO A59s开启OTG功能方法 - 河东软件园...
  12. 定制交友盲盒软件 交友盲盒软件开发 交友软件系统开发
  13. javascript高级程序设计读书笔记2
  14. FPGA——用VGA时序显示图像原理详解(2)
  15. 2022年全球市场胸腰椎板系统总体规模、主要生产商、主要地区、产品和应用细分研究报告
  16. 使用jasypt加密解密
  17. 哈佛商学院20部必看电影
  18. 一个有趣的实验之OSPF中RID相同建邻
  19. air英语怎么读_考研英语词汇记忆:air-conditioning怎么翻译及发音
  20. 微信餐饮小程序有必要开发吗

热门文章

  1. 25岁后,男人你知道吗?
  2. lua延时函数c语言,C语言拓展实现Lua sleep函数
  3. 2019年8月14号抖音更新后单个解析java版源码
  4. MAC安装maven历史版本
  5. OpenCV按照权重叠加合成图片
  6. html如何用百分百制作正方形,纯CSS实现自适应正方形
  7. DataGrid使用心得
  8. notepadd++ 实用的快捷键
  9. Centos 6.x Linux硬盘分区、删除分区、格式化分区
  10. 前端加密之使用Firefox来解密