访问者模式 简介题外话:这是要写的23种设计模式的最后一种,还没写完的时候,总想着赶紧写赶紧写,现在马上就要写完了,感觉时间过得好快啊,为了写这个系列花了三个月的时间,不过也将这块硬骨头啃下来了,值得记录一下。访问者模式,被誉为最复杂的设计模式,一般都用不上,刚开始接触的时候,确实是无法理解为什么要这么设计(来回套娃),感觉是为了封装而封装。下面我们来看看这个访问者模式是怎么套娃的吧。正文样例demoimport randomclass Interviewee: def __..
策略模式 简介说到策略,我第一个想到的就是诸葛亮的精囊妙计,诸葛亮给了赵云三个精囊,虽说每个精囊中的方法不同,但是开精囊的这个动作是相同的,策略模式就是将开锦囊的动作提取出来,每次只负责开锦囊,但是具体开哪个精囊是可以随时切换的。正文策略模式主要实现两个类,一个是上下文管理器,另一个是策略,下面我们用个例子演示一下class Scheme: def play(self): print("发动计谋")class FireScheme(Scheme): def.
观察者模式 简介观察者模式,首先设置一个观察者,针对某些事件或者对象进行观察。通过观察,观察者可能会做出一些反应,也可能不会。比如果保安观察监控,平常用户出入保安不会有反应,一旦发现小偷,保安就要立即做出相应的举动。正文观察者模式,也被称为订阅发布模式,主要有两种模式,拉模式和推模式,接下来我们演示一下:拉模式:class Subscribed: '''被订阅对象''' def __init__(self) -> None: self.observer.
备忘录模式 简介备忘录模式,百度了很多文章,大多都是说在不违背对象封装完整性的前提下,保存对象的状态,然后可以进行状态的回滚,因此又称为快照模式。但是个人又有一些小疑问,希望各路大佬可以一起讨论一下正文问题一:备忘录模式和享元模式的区别用法区别备忘录模式是将历史状态保存,直接在原有状态上修改。因此每次修改都可以回滚,但是不能合并享元模式是新建一个一模一样的对象,在全新的对象上进行修改。因此可以合并,回滚也只是切换消耗区别备忘录模式只能保存对象的状态,不能直接保存对象的实例,尝.
迭代器模式 简介参考链接:Python3 列表解析和迭代器的内存占用过程分析_Leon的博客-CSDN博客迭代器,在Python类中实现__iter__()就是一个可迭代对象,如果同时实现了next()就是一个迭代器。正文其实不是很能理解为什么要使用迭代器模式很多网上的文章,都说可以节省内存。在和朋友激烈的讨论之后,得出以下结论。迭代器只有在无中生有的情况下才会节省空间。举个例子,斐波那系数,每一个next都是上两个数相加得到的,如果我们需要第9个数,则需要next 9次,但是前8次的内.
命令模式 简介场景一:开发人员将火箭发射程式写入发射系统,指挥官深吸一口气,按下红色按钮,“10.9.8.7.6.5.4.3.2.1。点火,发射,助推器分离,一级火箭关机,一二级火箭分离,抛整流罩,二级火箭关机、分离,三级火箭一次关机,二次点火、二次关机,星箭分离,卫星太阳翼展开,火箭发射成功。“场景二:进入餐厅,打开菜单,仔细阅览,然后招来服务员,“我要这个,这个还有这个”。服务员接到订单后转交给厨房,厨房开始备菜,过了一段时间陆续出菜,再次由服务员转交。正文上面两个常见都是比较经典的命令..
解释器模式 简介解释器模式,简单来说就是一种翻译机,将我们听到的英文翻译成中文。那么这和我们之前提到的适配器模式有什么不同呢?下面我们来对比一下二者的区别正文首先,我先从以前的文章从贴过来一段适配器模式的代码实现class ProductA: def type_c(self): print("这是一个type-c输出") class ProductB(ProjectA): def type_c(self): print("经..