《精通Python设计模式》学习行为型之责任链模式
2024-08-24 15:47:22
感觉是全新的学习了。
因为在以前的工作中,并没有有意识的去运用哪一种编程模式。
以后要注意的了。
这才是高手之路呀~
class Event: def __init__(self, name): self.name = name def __str__(self): return self.name class Widget: def __init__(self, parent=None): self.parent = parent def handle(self, event): handler = 'handle_{}'.format(event) if hasattr(self, handler): method = getattr(self, handler) method(event) elif self.parent: self.parent.handle(event) elif hasattr(self, 'handle_default'): self.handle_default(event) class MainWindow(Widget): def handle_close(self, event): print('MainWindow: {}'.format(event)) def handle_default(self, event): print('MainWindows Default: {}'.format(event)) class SendDialog(Widget): def handle_paint(self, event): print('SendDialog : {}'.format(event)) class MsgText(Widget): def handle_down(self, event): print('MsgText: {}'.format(event)) def main(): mw = MainWindow() sd = SendDialog(mw) msg = MsgText(sd) for e in ('down', 'paint', 'unhandled', 'close'): evt = Event(e) print('\nSending event - {} - to MainWindow'.format(evt)) mw.handle(evt) print('\nSending event - {} - to SendDialog'.format(evt)) sd.handle(evt) print('\nSending event - {} - to MsgText'.format(evt)) msg.handle(evt) if __name__ == '__main__': main()
最新文章
- K2新网站(官网和BPM社区)正式上线了
- JavaScript Cookies
- Django~urls.py--->;views.py
- web设计经验<;四>;设计师必备的20条设计黄金法则
- 如何评估oracle AWR 的在oracle 中的存储情况
- poj 2117 Electricity
- Android系统更改状态栏字体颜色
- hudson
- iOS-如何使用symbolicatecrash
- 201521123089 《Java程序设计》第12周学习总结
- android notification,notificationmanager详解
- CF Manthan, Codefest 16 B. A Trivial Problem
- subprocess模块 sys模块
- WWSSN instrument response
- I2C和I2S的区别和使用方法
- PHP遍历数组常用方式(for,foreach,while,指针等等)
- Mongo如何导出 CSV文件
- 撩课-Web大前端每天5道面试题-Day4
- Oracle 统计信息
- 已知问题汇总 (2013-11-30) - QQ空间, EXTJS
热门文章
- Jenkins和Gitblit集成实现提交后自动构建
- 解决Pytohn安装第三方库出现read timed out 问题
- NAT—网络地址转换
- 使用IDEA复用代码时常见问题
- python---django的模块简便使用
- linux下常用的几个时间函数:time,gettimeofday,clock_gettime,_ftime
- SQL Server 属性不匹配。存在属性(Directory, Archive),包括属性(0),不包括属性(Archive, Compressed, Encrypted)
- poj 3216 Repairing Company
- 在传统的ADO.NET中使用事务
- VM虚拟机上连接usb无反映