观察者模式(Observer)

观察者模式(发布-订阅模式):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发送变化时,会通知所有观察者对象,让它们能够自动更新自己

————————————————

案例

珠宝商运送一批钻石,有黄金强盗准备抢劫,珠宝商雇佣了私人保镖,警察局也派人护送,于是当运输车上路的时候,强盗保镖警察都要观察运输车一举一动。

————————————————

程序:

1.     抽象的被观察者watched接口,有addWatcher,deleteWatch,notifyWatch方法
2.     抽象的观察者watcher接口,update方法
3.     具体的被观察者Transporter实现watched接口
4.     三个具体的观察者实现watcher,有具体的update方法
5.     测试类
————————————————

AHK代码:

;抽象观察者
Class Watcher
{update(){}
}
;具体观察者:警察
class Police extends Watcher
{update(){MsgBox % "运输车有行动,警察护航"}
};具体观察者:强盗
class Thief extends Watcher
{update(){MsgBox % "运输车有行动,强盗准备动手"}
};具体观察者:保镖
class Security extends Watcher
{update(){MsgBox % "运输车有行动,保安贴身保护"}
};抽象的被观察者
class Watched
{AddWatcher(_watcher){}removeWatcher(_watcher){}notifyWatchers(){}
};具体的被观察者
class Transporter extends Watched
{list:={}AddWatcher(_watcher){this.list.Push(_watcher)}removeWatcher(_watcher){for k,v in this.list{if (v=_watcher){;~ MsgBox 取消注册.this.list.remove(k)return}}MsgBox 没有注册.}notifyWatchers(){for _,_watcher in this.list_watcher.update()}
}class Test
{main(){_transporter:=new Transporter()_police:=new Police()_security:=new Security()_thief:=new Thief()_transporter.AddWatcher(_police)_transporter.AddWatcher(_security)_transporter.AddWatcher(_thief);~ _transporter.removeWatcher(_security)_transporter.notifyWatchers()}}t:=new Test()
t.main()

其它相关:

讲故事,学(AHK)设计模式—观察者模式_liuyukuan的博客-CSDN博客

[AHK]用AutoHotkey面向对象实践“观察者模式”相关推荐

  1. php面向对象实践,【技术产品】PHP中的面向对象实践-基本实践案例

    PHP中的面向对象实践-基本实践 (一).基本实践 一.类的概念 一.共同点: 都有相同的属性 都有相同的方法 二.不同点: 具体的值是不一样的 三.总结:他们都是一类的对象 说到类,现在来说说类的概 ...

  2. c++改写李维面向对象实践指南

    以前出过李维老师的一本书,<<面向对象实践指南c#版>>,我先后使用c++,java语言改写了一遍,这里列出c++改写的主要的类: ====================== ...

  3. 【AHK】autohotkey 自动登陆战网暗黑2杀进程双开多开

    使用软件:AHK v1.1.34,killhandle 期望实现的效果 1.自动杀DiabloII Check For Other Instances进程 2.自动登陆战网battle.net客户端, ...

  4. 小学期Python面向对象实践-2 # Python # Cilay

    · 面向对象编程之类运算操作小练习 描述 这是一个关于"面向对象编程之类运算操作"的小练习,覆盖面向对象编程中类的运算等语法的基本操作,包含两部分内容:跟随练习 和 小测验.‪‬‪ ...

  5. 使用AHK(autohotkey)脚本实现Foxmail一键带附件回复全部

    使用的AHK版本为1.1. 主要 #SingleInstance Force TrayTip ,,鼠标放在要回复的邮件上,按F1/F2/F3自动带附件回复全部.`n并触发ALT+1/2/3的快捷键 S ...

  6. [AHK]用AutoHotkey实现中银国际通达信版自动登录

    ;作者:Quant (http://blog.csdn.net/liuyukuan) ;QQ群:AutoHotkey程序化交易 208740743 ;时间:2016年12月9日10:10:21 ;功能 ...

  7. python定义一个dog类 类属性有名字毛色体重_面向对象实践,练习,Python

    1.定义一个汽车类(Car),属性有颜色,品牌,车牌号,并实例化两个对象 2.定义一个球员类(Player),属性有身高.体重.姓名,实例化两个球员,分别是姚明和科比 3.定义一个僵尸类(Zombie ...

  8. python面向对象实践二(银行账户资金交易管理)

    用类和对象实现一个银行账户的资金交易管理, 包括存款.取款和打印交易详情, 交易详情中包含每次交易的时间.存款或者取款的金额.每次交易后的余额. 如: 下面按照要求定义一个账户 Account 类.账 ...

  9. 读《道法自然-面向对象实践指南》

    读了几个段落,觉得这是一本很用心也写的很好的书,值得我好好看,也顺便把一些写得好的地方记录下来. 第四章 模式:变化之美VS永恒之道 p70:很多人讨厌需求的变化,他们一旦把设计或者编码做完,就求神拜 ...

最新文章

  1. ASP.NET弹出对话框几种基本方法【】
  2. 代码片段--批量生产库以及可执行文件的依赖关系
  3. Redis常用命令集
  4. Go tcp客户端、服务端编程
  5. 从XML文件读取数据绑定到列表控件2
  6. STM32——流水灯
  7. 安卓最好的浏览器_Wow!来自印度的操作系统,Prime OS X86安卓体验
  8. DB2 表的常用命令
  9. Linux配置静态IP 详细截图
  10. docker下载和安装
  11. 漫谈基础工业软件开发
  12. CMOS传输门原理及应用
  13. 人脸识别小区门禁系统_(完整版)小区人脸识别门禁系统
  14. ICML 2020论文笔记:地表最强文本摘要生成模型PEGASUS(天马)
  15. STM32CubeMX - 系统框图
  16. 2017-08-25阿里校招笔试题---菜鸟仓库
  17. 怎样把PDF格式转换成可编辑的PPT幻灯片?
  18. 从产品角度分析羊了个羊为何能爆火
  19. OpenGL颜色渐变
  20. oppo a36参数配置

热门文章

  1. Joseph game
  2. 世界上最经典的15句话!
  3. 谁说理工男不浪漫?电子工程师的恋爱神器
  4. GitHub Copilot一直等待问题
  5. 【人脸图像处理】数字化妆
  6. 树莓派GPIO驱动ST7735S主控TFT液晶屏显示图片和文字
  7. FL Studio 21中文永久版网盘下载(含Key.reg注册表补丁)
  8. 开源报表 Davinci 详细介绍
  9. windows 锁定计算机
  10. 华为产品测评官-开发者之声 半吊子学生的两天体验