python - 一个设计模式的请教
巴扎黑
巴扎黑 2017-04-18 09:51:38
[Python讨论组]

这几天遇到一个BUG引发的联想,起因是一个ORM(peewee)把python内置的logging的配置给覆盖了,正常的东西无法输出,反而是输出大量转化后的原生的SQL语句。而导致这个问题仅仅是引用了一个类(还没初始化,仅仅是引用)。

因此,想请教一下,是否算是一种设计模式,像角色扮演游戏那样,一个角色可以为附近的队友加buffer一样的效果。比如说我在一个脚本里用print输出一些文字到sys.stdout上,然而,只因为我导入了某个类进来,print的含义马上从输出变成发送这些消息到一个邮箱。相当于给print加了buff,建立起一个立场一样。或者说角色扮演的一个角色因为“变身”,而原来的技能都变了样。那样就可以实现“组件化”一般了,而之前我常用对象继承封装次数一多耦合度和BUG都会急剧增加。

正常情况

# 输出字符串
print 'design pattern'

增加buffer

from somewhere import mail_buffer
print 'design pattern'
#某人收到一封邮件,里面写着'design pattern'

我查找到一些现成设计模式的说明,然而我也是新手,看不出大概是对应哪一种设计模式,不知道对设计模式熟悉的人看完上面是否有点思路?谢谢!

巴扎黑
巴扎黑

全部回复(1)
PHP中文网

其实可以看作面向interface编程interface,定义一个interface,一个方法叫输出,A,B两个类都实现这个接口,A类里面是打印流,B类是写文件,这样在调用的时候只需要根据需要获取对应类的对象就行了,这样就实现了解耦,尤其是配合Ioc使用更明显

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号