随笔分类 - python设计模式
python设计模式
摘要:python设计模式之模板模式 编写优秀代码的一个要素是避免冗余。在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具。 现实中,我们没法始终写出100%通用的代码。许多算法都有一些(但并非全部)通用步骤。广度优先搜索( Breadth-First Search, BFS)和深度优先搜索
阅读全文
摘要:python设计模式之策略模式 大多数问题都可以使用多种方法来解决。以排序问题为例,对于以一定次序把元素放入一个列表,排序算法有很多。通常来说,没有公认最适合所有场景的算法一些不同的评判标准能帮助我们为不同的场景选择不同的排序算法,其中应该考虑的有以下几个。 需要排序的元素数量:这被称为输入大小。当
阅读全文
摘要:python设计模式之状态模式 面向对象编程着力于在对象交互时改变它们的状态。在很多问题中,有限状态机(通常名为状态机)是一个非常方便的状态转换建模(并在必要时以数学方式形式化)工具。首先,什么是状态机?状态机是一个抽象机器,有两个关键部分,状态和转换。状态是指系统的当前(激活)状况。例如,假设我们
阅读全文
摘要:python设计模式之观察者模式 有时,我们希望在一个对象的状态改变时更新另外一组对象。在MVC模式中有这样一个非 常常见的例子,假设在两个视图(例如,一个饼图和一个电子表格)中使用同一个模型的数据, 无论何时更改了模型,都需要更新两个视图。这就是观察者设计模式要处理的问题。 观察者模式描述单个对象
阅读全文
摘要:python设计模式之解释器模式 对每个应用来说,至少有以下两种不同的用户分类。 基本用户:这类用户只希望能够凭直觉使用应用。他们不喜欢花太多时间配置或学习应用的内部。对他们来说,基本的用法就足够了。 高级用户:这些用户,实际上通常是少数,不介意花费额外的时间学习如何使用应用的高级特性。如果知道学会
阅读全文
摘要:python设计模式之命令模式 现在多数应用都有撤销操作。虽然难以想象,但在很多年里,任何软件中确实都不存在撤销操作。撤销操作是在1974年引入的,但Fortran和Lisp分别早在1957年和1958年就已创建了撤销操作。 命令设计模式帮助我们将一个操作(撤销、重做、复制、粘贴等)封装成一个对象。
阅读全文
摘要:python设计模式之责任链模式 开发一个应用时,多数时候我们都能预先知道哪个方法能处理某个特定请求。然而,情况并非总是如此。例如,想想任意一种广播计算机网络,例如最早的以太网实现。在广播计算机网络中,会将所有请求发送给所有节点(简单起见,不考虑广播域),但仅对所发送请求感兴趣的节点会处理请求。加入
阅读全文
摘要:python设计模式之代理模式 在某些应用中,我们想要在访问某个对象之前执行一个或多个重要的操作,例如,访问敏感信息——在允许用户访问敏感信息之前,我们希望确保用户具备足够的权限。操作系统中也存在类似的情况,用户必须具有管理员权限才能在系统中安装新程序。 上面提到的重要操作不一定与安全问题相关。延迟
阅读全文
摘要:python设计模式之模型-视图-控制器模式 关注点分离( Separation of Concerns, SoC)原则是软件工程相关的设计原则之一。 SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注点。分层设计中的层次(数据访问层、业务逻辑层和表示层等)即是关注点的例子
阅读全文
摘要:python设计模式之享元模式 由于对象创建的开销,面向对象的系统可能会面临性能问题。性能问题通常在资源受限的嵌入式系统中出现,比如智能手机和平板电脑。大型复杂系统中也可能会出现同样的问题,因为要在其中创建大量对象(也可能是用户),这些对象需要同时并存。 这个问题之所以会发生,是因为当我们创建一个新
阅读全文
摘要:python设计模式之外观模式 系统会随着演化变得非常复杂,最终形成大量的(并且有时是令人迷惑的)类和交互,这种情况并不少见。许多情况下,我们并不想把这种复杂性暴露给客户端。外观设计模式有助于隐藏系统的内部复杂性,并通过一个简化的接口向客户端暴露必要的部分。本质上, 外观( Facade)是在已有复
阅读全文
摘要:python设计模式之修饰器模式 无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法。 如果合理,可以直接将功能添加到对象所属的类(例如,添加一个新的方法) 使用组合 使用继承 设计模式为我们提供第四种可选方法,以支持动态地(运行时)扩展一个对象的功能,这种方法就是修饰器。 修饰器(
阅读全文
摘要:python设计模式之适配器模式 结构型设计模式一个系统中不同实体(比如,类和对象)之间的关系,关注的是提供一种简单的对象组合方式来创造功能。 适配器模式( Adapter pattern)是一种结构型设计模式,帮助我们实现两个不兼容接口之间的容。首先,解释一下不兼容接口的真正含义。如果我们希望把一
阅读全文
摘要:python设计模式之建造者模式 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成。只有当各个部分都完成了,这个对象才完整。建造者模式表现为复杂对象的创建与表现相分离,这样,同一个过程就有不同的表现。 假设我们要创建一个HTML页面生成器就可以使用建造
阅读全文
摘要:python设计模式之工厂模式 1.工厂方法 在工厂模式中,我们执行单个函数,传入一个参数(提供信息表明我们想要什么),但并不要求知道任何关于实现以及对象来自哪里的细节。 1.1.1 现实生活中的例子 现实中用到工厂模式思想的一个例子是塑料玩具制造。制造塑料玩具的压塑粉都是一样的,但使用不同的塑料模
阅读全文

浙公网安备 33010602011771号