《无间道》观察者模式
电影无间道很多人都看过,讲的是关于黑社会与警局卧底的故事。
我们今天就聊一下无间道和面向对象的观察者模式到底有什么关系。
//被观察者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
《无间道》观察者模式相关推荐
- [hihoCoder]无间道之并查集
题目大意: #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之, ...
- #1066 : 无间道之并查集
#1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之,小Hi和小H ...
- 外贸企业员工上演”无间道” 商业秘密保护乏力
外贸企业高薪聘请技术.业务人员并悉心培养,不料企业员工却带着公司的技术图纸.客户资料扬长而去,还挖起了老东家的墙角.最近,不少外贸企业频频遭遇员工的"无间道",企业直呼应对乏力. ...
- 世界药王再遭“无间道”,药企如何保护自己的数据
多家药企屡遭无间道 2021年3月,美国知名生物制药公司艾伯维在一项新的诉讼中指控Alvotech公司招募的艾伯维的前员工Rongzan Ho窃取该公司药品修美乐的机密. 艾伯维的指控不是空穴来风,提 ...
- 对于爱情的透彻性理解:恋爱变成一场无间道...
对于爱情的透彻性理解:恋爱变成一场无间道... 没有一个男人,不是在一个女人的怀抱里长大的.他的狂躁,他的冷漠,他的不安分,他的稚气,皆是靠一个女人抹去. 谁都会有被收服的一天.一物降一物,卤水点豆腐 ...
- 无间道中毒综合征(影迷朋友过来看看)
台词篇: 1.在习惯性说出"过了明天就好了"这句话后,马上来个"呸呸呸!瞧我这嘴--" 2.每次发完牢骚后,都怪异地看着对方说:"吓着你了?对不起-- ...
- 【年度大戏】勒索”嘿客“无间道之战
[年度大戏]勒索"嘿客"无间道之战 为了保护多位表演群众,以下内容均以化名出现,所有图片取自对当事人的报告和贴吧原贴,历史群消息中,并均对ID打码处理(25仔的就不打了),本文只陈 ...
- 《无间道》中的“盲签字”
电影<无间道>里,梁朝伟饰演的角色陈永仁很尴尬,警校没毕业就被派到黑社会做卧底,到斗争最激烈的时候,他的身份证明被黑帮打入警局的刘建明(刘德华饰)彻底删除了,与陈永仁单线联系的黄督察(黄秋 ...
- 车行竟有内鬼!两男子上演无间道狂赚1500万
"给我一个机会." "怎么给你机会?" "我以前没得选,现在想做一个好人." "好啊,你去和法官说,看他让不让你当好人." ...
最新文章
- js中的offset函数和position
- 当查找名字的时候通过外围作用域向外查找(如何理解)
- (转)二分图最大匹配的König定理及其证明
- margin 塌陷bug 触发bfc
- 要写related_name的两种情况
- JavaScript中各存在性函数
- unix学习笔记1 read () write()
- StringBuilder 详解 (String系列之2)
- Android GIS开发系列-- 入门季(15) 网络图层加载
- python按内容分割txt文件_python 读txt文件,按‘,’分割每行数据操作
- oppoa59s计算机功能,OPPO A59s怎么开启OTG功能-OPPO A59s开启OTG功能方法 - 河东软件园...
- 定制交友盲盒软件 交友盲盒软件开发 交友软件系统开发
- javascript高级程序设计读书笔记2
- FPGA——用VGA时序显示图像原理详解(2)
- 2022年全球市场胸腰椎板系统总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 使用jasypt加密解密
- 哈佛商学院20部必看电影
- 一个有趣的实验之OSPF中RID相同建邻
- air英语怎么读_考研英语词汇记忆:air-conditioning怎么翻译及发音
- 微信餐饮小程序有必要开发吗