Python设计模式
《Python设计模式第2版》学习笔记整理
彭世瑜
要成为程序员的男人,个人主页:www.pengshiyu.com
-
原创 Python:设计模式之设计模式简介
1、面向对象 对象 应用程序内的实体 类 定义对象的属性(数据成员)和行为(成员函数) 构造函数:初始化对象状态 模板,利于复用 方法 表示对象的行为 处理属性,实现功能 2、面向对象的主要概念 封装: 数据和方法的隐藏 多态: 对象根据输入参数提供方法的不同实现 不同类型的对象可以使用相同的接口 继承: 不同类的对...2019-06-28 17:19:31230
0
-
原创 Python:设计模式之反模式
不良设计 不动性:应用程序难以重用 刚性:任何小的修改都会导致软件的大多部分必须进行相应改动,牵一发动全身 脆弱性:任何更改都会导致先有系统变得非常容易崩溃 粘滞性:由于架构层面的修改非常困难,因此修改必须由开发人员在代码或环境本身中进行 反模式分类 软件开发反模式 软件架构反模式 软件开发反模式 1、意大利面条式代码 控制流程错综复杂 2、金锤 由于某个解决方案(技术,设计或模块)在多个项目...2019-06-28 17:15:58167
0
-
原创 Python:设计模式之状态模式
状态设计模式 属于行为模式 一个对象可以基于其内部状态封装多个行为,状态模式也可以被看做是在运行时改变对象行为的一种方式 状态设计模式的3个主要参与者 1、State: 封装对象行为的接口,这个行为与对象的状态相关联 2、ConcreteState: 实现State 接口的子类,ConcreteState 实现与对象的特定状态相关联的实际行为 3、Context:定义了客户感兴趣的接口,Conte...2019-06-24 20:05:41117
0
-
原创 Python:设计模式之模型-视图-控制器-MVC复合模式
复合模式: 将两个或更多个模式组合成解决常见或普遍性问题的解决方案 MVC模式工作机制 模型,提供数据和业务逻辑 视图,负责数据展示 控制器,模型和视图的粘合剂 MVC模式术语 模型:声明一个存储和操作数据的类 视图:声明一个类来构建用户界面和显示数据 控制器:声明一个连接模型和视图的类 客户端:声明一个类,更具某些操作来获得某些结果 MVC模式应用场景 1、当需要更改展示方式而不更改业务逻辑 2...2019-06-23 09:17:23287
0
-
原创 Python:设计模式之模板模式
模板模式属于行为模式,通过模板方法来定义程序框架或算方法 可以使用抽象类来定义算法步骤,由子类来实现算法中特定步骤 适用场景 1、当多个算法或类实现类似或相同逻辑的时候 2、在子类中实现算法有助于减少重复代码的时候 3、可以让子类利用覆盖事项行为来定义多个算法的时候 主要意图 1、适用基于操作定义算法的框架 2、重新定义子类的某些操作,而无需修改算法的结构 3、实现代码重用并避免重复工作 4、利用...2019-06-21 09:36:18307
0
-
原创 Python:设计模式之命令模式
命令模式 命令模式属于行为型模式 行为型模式侧重于对象的响应性,利用对象之间的交互实现更强大的功能 其中对象用于封装在完成一项操作或在触发一个事件时所需的全部信息: 1、方法名称 2、拥有方法的对象 3、方法参数的值 命令模式术语 Command: 声明执行操作的接口 ConcreteCommand:将一个Receiver对象和一个操作绑定在一起 Receiver:创建ConcreteComman...2019-06-19 20:35:02147
0
-
原创 Python:设计模式之观察者模式
三类模式 1、创建型模式:基于对象的创建机制。隔离了对象的创建细节,使得代码能够与要创建的对象的类型相互独立 2、结构型模式:用于设计对象和类的结构,从而使他们可以相互协作以获得更大的结构, 重点关注的是简化结构和识别类和对象之间的关系 3、行为型模式:主要关注对象的责任。用来处理对象之间交互,以实现更大的功能 行为型模式建议:对象之间应该能够彼此交互,同时还应该是松耦合的 观察者模式 观察者设计...2019-06-16 13:40:51409
0
-
原创 Python:设计模式之代理模式
一、代理模式 代理,通常就是一个介于寻求方和提供方之间的中介系统 设计模式中,代理充当实际对象接口的类 二、使用场景 1、以简单的方式表示一个复杂系统 2、提高现有实际对象的安全性 3、为不同服务器上的远程对象提供本地接口 4、为消耗大量内存的对象提供一个轻量级的句柄 三、代理模式的优点 1、代理模式可以通过缓存笨重的对象或频繁访问的对象来提高应用程序的性能 2、代理还提供对于真实主题的访问授权 ...2019-06-15 16:02:03395
0
-
原创 Python:设计模式之门面模式
1、结构型模式 描述如何将对象和类组合成更大的结构 -类模式:通过继承来描述抽象,从而提供更有用的程序接口 -对象模式:描述了如何将对象联系起来,从而组合成更大的对象 2、结构型模式例子: 适配器模式:将一个接口转换成客户希望的另一个接口,根据客户端的不同需求来匹配不同类的接口 桥接模式:将对象的接口与其实现进行解耦,使得两者可以独立工作 装饰器模式:允许在运行时或以动态方式为对象添加职责,通过接...2019-06-14 09:40:36105
0
-
原创 Python:设计模式之工厂模式
工厂: 表示负责创建其他类型对象的类 优点: 1、松耦合,对象的创建可以独立于类的实现 2、客户端无需了解创建对象的类,但是可以使用它来创建对象。只需要知道需要传递的接口,方法和参数 3、工厂中添加其他类来创建其他类型的对象,无需更改客户端代码 4、工厂可以重用现有对象 分类 1、简单工厂模式 允许接口创建对象,但不会暴露对象的创建逻辑 2、工厂方法模式 允许接口创建对象,但使用哪个类来创建对象,...2019-06-13 11:19:58510
0
-
原创 Python:设计模式之单例模式
单例模式: 1、确保类有且只有一个对象被创建 2、为对象提供一个全局访问点 3、控制共享资源的并行访问 实现单例最简单的方式: 使构造函数私有化,并创建一个静态方法来完成对象初始化 使用场景: 一个类要求只有一个实例对象 单例模式的缺点 1、全局变量可能被误修改 2、对同一个对象创建多个引用 3、所有依赖于全局变量的类都会由于一个类的改变而紧密耦合为全局数据,从而可能在无意中影响另一个类 一、经典...2019-06-12 12:00:40223
0