[AHK]用AutoHotkey面向对象实践“观察者模式”
观察者模式(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面向对象实践“观察者模式”相关推荐
- php面向对象实践,【技术产品】PHP中的面向对象实践-基本实践案例
PHP中的面向对象实践-基本实践 (一).基本实践 一.类的概念 一.共同点: 都有相同的属性 都有相同的方法 二.不同点: 具体的值是不一样的 三.总结:他们都是一类的对象 说到类,现在来说说类的概 ...
- c++改写李维面向对象实践指南
以前出过李维老师的一本书,<<面向对象实践指南c#版>>,我先后使用c++,java语言改写了一遍,这里列出c++改写的主要的类: ====================== ...
- 【AHK】autohotkey 自动登陆战网暗黑2杀进程双开多开
使用软件:AHK v1.1.34,killhandle 期望实现的效果 1.自动杀DiabloII Check For Other Instances进程 2.自动登陆战网battle.net客户端, ...
- 小学期Python面向对象实践-2 # Python # Cilay
· 面向对象编程之类运算操作小练习 描述 这是一个关于"面向对象编程之类运算操作"的小练习,覆盖面向对象编程中类的运算等语法的基本操作,包含两部分内容:跟随练习 和 小测验. ...
- 使用AHK(autohotkey)脚本实现Foxmail一键带附件回复全部
使用的AHK版本为1.1. 主要 #SingleInstance Force TrayTip ,,鼠标放在要回复的邮件上,按F1/F2/F3自动带附件回复全部.`n并触发ALT+1/2/3的快捷键 S ...
- [AHK]用AutoHotkey实现中银国际通达信版自动登录
;作者:Quant (http://blog.csdn.net/liuyukuan) ;QQ群:AutoHotkey程序化交易 208740743 ;时间:2016年12月9日10:10:21 ;功能 ...
- python定义一个dog类 类属性有名字毛色体重_面向对象实践,练习,Python
1.定义一个汽车类(Car),属性有颜色,品牌,车牌号,并实例化两个对象 2.定义一个球员类(Player),属性有身高.体重.姓名,实例化两个球员,分别是姚明和科比 3.定义一个僵尸类(Zombie ...
- python面向对象实践二(银行账户资金交易管理)
用类和对象实现一个银行账户的资金交易管理, 包括存款.取款和打印交易详情, 交易详情中包含每次交易的时间.存款或者取款的金额.每次交易后的余额. 如: 下面按照要求定义一个账户 Account 类.账 ...
- 读《道法自然-面向对象实践指南》
读了几个段落,觉得这是一本很用心也写的很好的书,值得我好好看,也顺便把一些写得好的地方记录下来. 第四章 模式:变化之美VS永恒之道 p70:很多人讨厌需求的变化,他们一旦把设计或者编码做完,就求神拜 ...
最新文章
- ASP.NET弹出对话框几种基本方法【】
- 代码片段--批量生产库以及可执行文件的依赖关系
- Redis常用命令集
- Go tcp客户端、服务端编程
- 从XML文件读取数据绑定到列表控件2
- STM32——流水灯
- 安卓最好的浏览器_Wow!来自印度的操作系统,Prime OS X86安卓体验
- DB2 表的常用命令
- Linux配置静态IP 详细截图
- docker下载和安装
- 漫谈基础工业软件开发
- CMOS传输门原理及应用
- 人脸识别小区门禁系统_(完整版)小区人脸识别门禁系统
- ICML 2020论文笔记:地表最强文本摘要生成模型PEGASUS(天马)
- STM32CubeMX - 系统框图
- 2017-08-25阿里校招笔试题---菜鸟仓库
- 怎样把PDF格式转换成可编辑的PPT幻灯片?
- 从产品角度分析羊了个羊为何能爆火
- OpenGL颜色渐变
- oppo a36参数配置