设计模式
thorraythorray
这个作者很懒,什么都没留下…
展开
-
单例模式和连接池
经常看见把SQL的连接写成单例模式,就认为可以节省内存开支和优化连接速度,更有认为这样会让数据库连接在高并发的情况下造成锁。其实并未真正体会到单例的使用场景。从连接数据库上来说,单例模式连接数据库分为两部分:得到数据库的认证和服务器信息-Datasource连接数据库-Connecting其实singleton只发生在第一步Datasource,只形成一个数据库配置实例。至于第二步Connecting和单例没有任何关系,而在高并发出现锁的时候推荐使用连接池才是正道。只有把Connecting写原创 2022-01-09 15:34:02 · 1214 阅读 · 0 评论 -
简谈python中的__call__和类方法的使用场景
python的魔法方法__call__和实例方法,都可以实现一个功能,但是在哪种情况下应该使用呢?当类要表达它的多态,开放各类的需求api时候,使用类方法是比较好的。他的生命延展就像是一个不断分叉的树。但如果定义一个类最终只是向外暴露出一个api,剩下的类方法都为它服务的,那选择call我觉得合适一些。...原创 2021-01-27 13:44:18 · 771 阅读 · 1 评论 -
浅谈python的工厂方法模式
在python的设计模式中,常用的还有工厂模式。工厂模式分为简单工厂模式,工厂模式,抽象工厂模式。其实就是对面向对象开发由浅入深,由具体到抽象的一种设计理念,它对代码有低耦合,避免重复工作。简单工厂模式简单的单类解决问题,写好类后,在工厂接口类在里通过判断区分到底应该实例化哪一个类。缺点在于每次实例化需要传参,而且添加新内容时候,判断中还需新入口词。开放-封闭原则。class Language: passclass English(Language): def speak(self):原创 2021-01-05 23:13:15 · 104 阅读 · 0 评论 -
简谈python中的mixin混合类
mixin是一种通用语言的设计模式,在python中指的就是多重继承。最近在看django2.0以上的源码时,发现主体框架都是mixin模式比较多,整体看起来非常有舒适感。因此想简单谈谈我对mixin使用的感悟。为什么要用mixin面向对象编程特点中的一个就是继承性,mixin是多重继承,难道是继承的时候多写了两个类就是mixin了么?先说结论,mixin指在继承原始类的功能下,把附加的不好抽象到父类的功能,写个新类出来继承,便是mixin。举个常用栗子:Class Bird: def paw(s原创 2020-12-29 14:05:11 · 501 阅读 · 0 评论