![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
生活就是屁颠屁颠的过
所有命运馈赠的礼物,早已在暗中标好了价格
展开
-
设计模式总结
总结所有设计模式原创 2020-02-24 14:32:01 · 25465 阅读 · 0 评论 -
Python设计模式:模板模式
设计模式十七:模板模式什么是模板模式编写优秀代码的一个要素是避免冗余;模式关注的是消除代码冗余;无需改变算法结构就能重新定义一个算法的某些部分。使用场景发现结构相近的算法中有重复代码,则可以把算法的不变部分留在一个模板方法中,把易变的部分移动到动作/钩子方法中。典型案例工人的日常所有工人都遵从或多或少相同的例行流程,但例行流程的某些特定部分区别又很大。实例代码from cow...原创 2020-01-25 06:55:08 · 25605 阅读 · 0 评论 -
Python设计模式:策略模式
设计模式十六:策略模式什么是策略模式鼓励使用多种算法来解决一个问题,其杀手级特性是能够在运行的时候透明地切换算法。如果有两种算法,其中一种少量输入效果好,另一种对大量输入效果好,则可以使用策略莫斯在运行时基于输入数据决定使用哪种算法。使用场景动态、透明地应用不同算法(目的相同但实现方案不同)创建不同的样式表现,为了实现可移植性或动态地改变数据的表现模拟:机器人行为中的所有不同之处都...原创 2020-01-25 06:52:23 · 25644 阅读 · 0 评论 -
Python设计模式:状态模式
设计模式十五:状态模式什么是状态模式状态模式就是状态机模式,状态机是一个抽象机器,两个关键部分:状态和转换。状态:系统的当前状况。转换:从一个状态转换到另一个状态,因某个事件或条件的触发而开始。通常在一次转换发生之前或之后会执行一个或一组动作。注意:一个状态机在一个特定时间点只能有一个激活状态可用模块:state_machine典型案例电梯运行,电梯有三个状态,停止,上行,下行。...原创 2020-01-24 06:52:23 · 25804 阅读 · 0 评论 -
Python设计模式:旁观者模式
设计模式十四:旁观者模式什么是旁观者模式描述单个对象(发布者)与一个或多个对象(订阅者)之间的发布-订阅关系。使用场景希望在一个对象的状态改变时更新另外一组对象。典型案例拍卖会,不论出价人在何时举牌,拍卖师都会更新报价,并将新的价格广播给所有出价人。实例代码class Publisher: #将订阅者添加到列表中,提供添加 删除 功能 def __init__(self)...原创 2020-01-23 14:30:58 · 25606 阅读 · 0 评论 -
Python设计模式:解释器模式
设计模式十三:解释器模式什么是解释器模式主要放向:让非初级用户和领域专家使用一门简单的语言来表达想法一般是高级用户才会有所兴趣。典型案例音乐演奏者是现实中解释器模式的例子,五线谱图形化地表达了声音的音调和持续时间(音乐语言)音乐演奏者能根据五线谱的符合精确重现声音(语言解释器)补充知识领域特定语言(Domain Specific Language ,DSL):针对一个特定领域的有...原创 2020-01-21 22:46:54 · 25577 阅读 · 1 评论 -
Python设计模式:命令模式
设计模式十二:命令模式什么是命令模式将一个操作(撤销、重做、复制、粘贴等)封装成一个对象。使用优势不需要直接执行一个命令,命令可以按照希望执行。调用命令的对象与知道如何执行命令的对象解耦。调用者无需知道命令的任何实现细节。可以把多个命令组织起来,调用者能够按顺序执行。使用场景如果一个操作需要多次被调用,并且需要在不同场景调用,那么就可以将其封装成一个对象典型案例餐馆点餐,每个...原创 2020-01-21 14:41:00 · 25608 阅读 · 0 评论 -
Python设计模式:责任链模式
设计模式十一:责任链模式什么是责任链模式用来处理相关事务责任的一条执行链,执行链上有多个节点,每个节点都有机会(条件匹配)处理请求事务,如果某个节点处理完了就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕。原则:存在一个对象链,一开始将请求发给链中的第一个对象,对象决定其是否处理该请求,对象将请求转发给下一个对象,重复该过程,直到到达链尾。使用场景用于让多个对象来处理单个请...原创 2020-01-08 22:02:47 · 25543 阅读 · 0 评论 -
Python设计模式:代理模式
设计模式十:代理模式什么是代理模式使用代理对象在访问实际对象之前执行重要操作。可以使用一个新的类来进行包装完成此模式。四种类型:远程代理:实际存在于不同地址空间的对象在本地的代理者。虚拟代理:用于懒初始化,将一个大计算量对象的创建延迟到真正需要的时候进行。保护代理:控制对敏感对象的访问。智能代理:在对象被访问时执行额外的动作。典型案例1.使用私有网络或云搭建一个分布式系统2....原创 2020-01-04 22:51:57 · 25554 阅读 · 0 评论 -
Python设计模式:模型-视图-控制器模式
设计模式九:模型-视图-控制器模式什么是模型-视图-控制器模式模式的名称来自用来切分软件应用的三个主要部分:模型部分,视图部分和控制器部分,这是一种架构模式。模型:代表着应用的信息本源,包含和管理逻辑,数据,状态以及应用规则。视图:是模型的可视化表现。控制器:模型与视图之间的链接、粘附。模型与视图之间的所有通信都是通过控制器进行的。使用优势1.无需修改模型就能使用多个视图的能力2...原创 2020-01-04 16:21:50 · 25679 阅读 · 0 评论 -
Python设计模式:享元模式和单例模式
设计模式八:享元模式和单例模式什么是享元模式享元模式是一个用于优化的设计模式,通过为相似对象引入数据共存来最小化内存使用,提升性能。一个享元就是一个包含状态独立的不可变数据的对象,依赖状态的可变数据不是享元的一部分,每个对象的这种信息不同,无法共享。享元是一种特定于面向对象编程优化的设计模式,关注的是共享对象数据。使用场景应用需要使用大量的对象。对象太多,存储/渲染的代价太大。对象...原创 2020-01-01 17:45:14 · 25758 阅读 · 2 评论 -
Python设计模式:外观模式
设计模式七:外观模式什么是外观模式有助于隐藏系统的内部复杂性,并通过一个简化的接口向客户端暴露必要的部分,这就是外观模式使用场景要为一个复杂系统提供单个简单的入口点时,就可以使用此模式优点:1.可以改变系统内部代码,但是客户端代码不用关心也不受影响。2.在多层系统中,可以为每一层引入一个外观接口,并让所有层级通过这些外观相互通信,提高了层级之间的松耦合性,尽可能保持层级独立。典型案...原创 2020-01-01 11:20:27 · 25748 阅读 · 0 评论 -
Python设计模式:修饰器模式
设计模式六:修饰器模式什么是修饰器模式以透明的方式动态地将功能添加到一个对象中给对象添加额外功能的方法1.直接将功能添加到对象所属的类,2.使用组合3.使用继承4.使用修饰器典型案例图形用户界面工具集,希望给单个组件/部件添加一些特性,比如滚动 颜色 阴影实例代码import functoolsdef add_color(fn): #要保留被修饰函数的文档和签名,可...原创 2019-12-30 22:17:00 · 25537 阅读 · 0 评论 -
Python设计模式:适配器模式
设计模式五:适配器模式什么是适配器模式实现两个不兼容接口之间的兼容使用场景某个产品已制造出来之后,需要应对新的需求,希望其仍然有效不兼容接口是他方的或者是老旧的,无法访问其源码或者修改起来不切实际,并且违反开放/封闭原则。放开/封闭原则:面向对象设计的基本原则之一,声明一个软件实体应该对扩展是开放的,对修改则是封闭的,意味着无需修改一个软件实体的源代码就能扩展其行为。典型案例在不同...原创 2019-12-29 15:11:42 · 25592 阅读 · 0 评论 -
Python设计模式:原型模式
设计模式四:原型模式什么是原型模式创建某个时间点对原有对象的一个完全副本。使用场景重新创建原有对象没有意义时,一个对象过于复杂不适合重新创建时,希望对对象的某些部分变更但又希望保持原有对象不变时,此时可以使用原型模式。典型案例复制一张图片,在复制出的图片上做修改,这样不会影响原图片,也可以得要修改后的图片。实例代码#原型模式必备import copyfrom collec...原创 2019-12-29 13:39:11 · 25648 阅读 · 0 评论 -
Python设计模式:建造者模式
什么是建造者模式创建一个由多个部分构成的对象,而且构成需要一步步完成只有当各部分都创建好,这个对象才算是完整的。此模式有两个参与者:建造者和指挥者建造者负责创建复杂对象的各个组成部分指挥者是使用一个建造者实例控制建造的过程使用场景知道一个对象必须经过多个步骤来创建,并且要求同一个构造过程可以产生不同的表现,就可以使用建造者模式建造者模式和工厂模式的差别:工厂模式以单个步骤创建对象,...原创 2019-12-28 22:21:16 · 25599 阅读 · 0 评论 -
Python设计模式:抽象工厂模式
设计模式二:抽象工厂模式什么是抽象工厂模式抽象工厂模式是工厂方法模式的一种泛化。当应用许多工厂方法时,将创建一系列对象的过程合并在一起会更合理,此时便引入了抽象工厂。优点1.让对象的创建更容易追踪2.对象创建与使用解耦3.提供优化内存占用和应用性能的潜力4.通过改变激活的工厂方法动态地改变应用行为(例如应用切换风格)实例代码class MP3: def __init__(...原创 2019-12-27 22:41:46 · 25718 阅读 · 0 评论 -
Python设计模式:工厂模式
设计模式一:工厂模式什么是工厂模式根据提供的信息,在工厂的处理下,返回给想要的结果。比如,甲方给工厂提供一个外形要求,及外形是鸭子。工厂里有许许多多的模具,有鸭子,小狗,小猫等等。工厂在接到要求后,根据要求选择出鸭子的模具返回给了甲方。使用特点1.请求一个对象,而无需知道这个对象来自哪里,简化对象的创建2.可以通过工厂模式来对相似的对象创建进行分组3.可以创建多个工厂,每个工厂负责一...原创 2019-12-26 22:28:03 · 25604 阅读 · 0 评论