
设计模式
达西布鲁斯
8年IT一线经验,历任DevOps和DevTest岗位,熟悉Python开发。关注API自动化测试、GUI自动化测试、性能测试、DevOps、CICD等方向
展开
-
Python设计模式之单例模式(1)
1,什么是设计模式1.1 设计模式分类软件设计中,设计模式是指软件设计问题的最佳推荐方案,一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。根据设计模式的参考书Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素)中所提到的,总共有 23 种设计模式。...原创 2019-04-23 10:51:24 · 395 阅读 · 0 评论 -
Python设计模式之模版模式(16)
模版模式(The Template Pattern):抽象出算法公共部分从而实现代码复用。模板模式中,我们可以把代码中重复的部分抽出来作为一个新的函数,把可变的部分作为函数参数,从而消除代码冗余。一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。1 介绍现实生活中的例子:工人建造房子时,设计师设计的房间基本骨架结构都是一样的,工...原创 2019-09-30 11:04:04 · 504 阅读 · 1 评论 -
Python设计模式之策略模式(15)
策略模式(The Strategy Pattern): 动态选择算法策略。它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。1 介绍现实中的例子:大多数问题都可以使用多种方法来解决。以排序问题为例,对于以一定次...原创 2019-09-29 16:25:08 · 668 阅读 · 0 评论 -
Python设计模式之状态模式(14)
状态模式(The State Pattern):实现有限的状态机,类的行为是基于它的状态改变的。是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。...原创 2019-09-28 21:48:39 · 842 阅读 · 0 评论 -
Python设计模式之观察者模式(13)
观察者模式(The Observer Pattern):用来处理多个对象之间的发布订阅问题。当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。有时,我们希望在一个对象的...原创 2019-09-27 15:10:57 · 411 阅读 · 0 评论 -
Python设计模式之命令模式(12)
命令模式(The Command Pattern):用来给应用添加Undo操作,将命令操作封装为对象,控制命令的执行时间和过程。命令模式是一种行为设计模式,它可将请求转换为一个包含与请求相关的所有信息的独立对象。该转换让你能根据不同的请求将方法参数化、延迟请求执行或将其放入队列中,且能实现可撤销操作。命令模式帮助我们把一个操作(undo,redo,copy,paste等)封装成一个对象,通...原创 2019-09-03 22:30:30 · 590 阅读 · 0 评论 -
Python设计模式之职责链模式(11)
职责链模式(Chain of Responsibility Pattern):创建链式对象用来接收广播消息。为请求创建了一个接收者对象的链,用来依次处理消息,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。职责链模式的定义如下:使多个对象都有...原创 2019-08-24 18:48:33 · 424 阅读 · 0 评论 -
Python设计模式之享元模式(8)
享元模式(Flyweight Pattern):复用现有的同类对象,改善资源使用主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。OOP编程中容易出现对象创建带来的性能和内存占用问题,需要满足以下条件:需要使用大量对象(pyth...原创 2019-06-24 16:46:04 · 348 阅读 · 0 评论 -
Python设计模式之代理模式(10)
代理模式(Proxy Pattern):通过一层间接保护层实现更隐蔽的接口访问在访问真正的对象之前做一些操作。有四种常用的代理类型:A remote proxy.使得访问远程对象就像本地访问一样,例如网络服务器。隐藏复杂性,使得访问本地远程统一。比如ORM A virtual proxy。用来实现延迟访问,比如一些需要复杂计算的对象,python里可以实现lazy_property,性能...原创 2019-07-30 19:34:22 · 383 阅读 · 0 评论 -
Python设计模式之MVC模式(9)
MVC模式:Model-View-Controller模式,实现业务逻辑和展现逻辑解藕。1 介绍MVC模式既是一种设计模式,也是软件架构模式。比如流行的django框架就是mvc(MTV)模式。Model层负责和数据库交互,View层负责展现逻辑,Controller层负责粘合Model和View层,将各个部分解耦,使代码更易扩展和维护。模型—视图—控制器(Model-View-Con...原创 2019-06-26 14:57:38 · 1132 阅读 · 0 评论 -
Python设计模式之外观模式(7)
外观模式(Facade Pattern):简化复杂对象的访问。隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。1 介绍系统会随着演化变得非常复杂,最终形成大量的(并且有时是令人迷惑的)类和交互,这种...原创 2019-06-23 10:37:28 · 472 阅读 · 0 评论 -
Python设计模式之装饰器模式(6)
装饰器模式(Decorator Pattern):在不修改原对象结构的前提下,实现扩展对象功能。通常给一个对象添加新功能有三种方式: - 直接给对象所属的类添加方法。 - 使用『组合』 - 使用『继承』,优先使用组合而非继承。 装饰器模式提供了第四种选择,通过动态改变对象扩展对象功能。其他编程语言通常使用继承实现装饰器装饰器模式,而python内置了装饰器。装饰器有很多用途,比如数据校验,事务...原创 2019-06-22 11:46:31 · 250 阅读 · 0 评论 -
Python设计模式之适配器模式(5)
适配器模式(Adapter Pattern):用于解决接口不兼容的问题,作为两个不兼容接口之间的桥梁。1 介绍首先,解释一下不兼容接口的真正含义。如果我们希望把一个老组件用于一个新系统中,或者把一个新组件用于一个老系统中,不对代码进行任何修改两者就能够通信的情况很少见。但又并非总是能修改代码,或因为我们无法访问这些代码(例如,组件以外部库的方式提供),或因为修改代码本身就不切实际。在...原创 2019-06-20 21:32:54 · 432 阅读 · 0 评论 -
Python设计模式之建造者模式(3)
建造者模式(Builder Pattern)构造模式: 控制复杂对象的构造过程当对象需要多个部分组合起来一步步创建,并且创建和表示分离的时候。可以这么理解,你要买电脑,工厂模式直接返回一个你需要型号的电脑,但是构造模式允许你自定义电脑各种配置类型,组装完成后给你。这个过程你可以传入builder从而自定义创建的方式。1 介绍建造者模式(Builder Pattern)使用多个简单的对象...原创 2019-06-17 20:30:58 · 628 阅读 · 0 评论 -
Python设计模式之原型模式(4)
原型模式(Prototype Pattern):复制已有的对象,实现功能复用和优化1 介绍原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操...原创 2019-06-19 21:51:58 · 391 阅读 · 0 评论 -
Python设计模式之工厂模式(2)
工厂模式(Factory Pattern):解决对象创建问题,将对象的创建和使用解藕。1 介绍工厂模式(Factory Pattern),顾名思义就是我们可以通过一个指定的“工厂”获得需要的“产品”,在设计模式中主要用于抽象对象的创建过程,让用户可以指定自己想要的对象而不必关心对象的实例化过程。这样做的好处是用户只需通过固定的接口而不是直接去调用类的实例化方法来获得一个对象的实例,隐藏了实...原创 2019-06-16 17:10:26 · 600 阅读 · 0 评论 -
Python设计模式之迭代器模式(17)
迭代器模式(Iterator Pattern):提供方法顺序访问一个聚合对象中各元素,而又不暴露该对象的内部表示.业务场景集合是编程中最常使用的数据类型之一。大部分集合使用简单列表存储元素。 但有些集合还会使用栈、 树、 图和其他复杂的数据结构。无论集合的构成方式如何, 它都必须提供某种访问元素的方式, 便于其他代码使用其中的元素。 集合应提供一种能够遍历元素的方式, 且保证它不会周而复始地...原创 2019-09-30 16:11:57 · 329 阅读 · 0 评论