摘要: python设计模式之模板模式 编写优秀代码的一个要素是避免冗余。在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具。 现实中,我们没法始终写出100%通用的代码。许多算法都有一些(但并非全部)通用步骤。广度优先搜索( Breadth-First Search, BFS)和深度优先搜索 阅读全文
posted @ 2020-07-04 19:23 JonnyJiang-zh 阅读(259) 评论(0) 推荐(0) 编辑
摘要: python设计模式之策略模式 大多数问题都可以使用多种方法来解决。以排序问题为例,对于以一定次序把元素放入一个列表,排序算法有很多。通常来说,没有公认最适合所有场景的算法一些不同的评判标准能帮助我们为不同的场景选择不同的排序算法,其中应该考虑的有以下几个。 需要排序的元素数量:这被称为输入大小。当 阅读全文
posted @ 2020-07-04 18:52 JonnyJiang-zh 阅读(289) 评论(0) 推荐(0) 编辑
摘要: python设计模式之状态模式 面向对象编程着力于在对象交互时改变它们的状态。在很多问题中,有限状态机(通常名为状态机)是一个非常方便的状态转换建模(并在必要时以数学方式形式化)工具。首先,什么是状态机?状态机是一个抽象机器,有两个关键部分,状态和转换。状态是指系统的当前(激活)状况。例如,假设我们 阅读全文
posted @ 2020-07-04 18:15 JonnyJiang-zh 阅读(786) 评论(0) 推荐(0) 编辑
摘要: python设计模式之观察者模式 有时,我们希望在一个对象的状态改变时更新另外一组对象。在MVC模式中有这样一个非 常常见的例子,假设在两个视图(例如,一个饼图和一个电子表格)中使用同一个模型的数据, 无论何时更改了模型,都需要更新两个视图。这就是观察者设计模式要处理的问题。 观察者模式描述单个对象 阅读全文
posted @ 2020-07-04 17:33 JonnyJiang-zh 阅读(284) 评论(0) 推荐(0) 编辑
摘要: python设计模式之解释器模式 对每个应用来说,至少有以下两种不同的用户分类。 基本用户:这类用户只希望能够凭直觉使用应用。他们不喜欢花太多时间配置或学习应用的内部。对他们来说,基本的用法就足够了。 高级用户:这些用户,实际上通常是少数,不介意花费额外的时间学习如何使用应用的高级特性。如果知道学会 阅读全文
posted @ 2020-07-04 17:10 JonnyJiang-zh 阅读(250) 评论(0) 推荐(0) 编辑
摘要: python设计模式之命令模式 现在多数应用都有撤销操作。虽然难以想象,但在很多年里,任何软件中确实都不存在撤销操作。撤销操作是在1974年引入的,但Fortran和Lisp分别早在1957年和1958年就已创建了撤销操作。 命令设计模式帮助我们将一个操作(撤销、重做、复制、粘贴等)封装成一个对象。 阅读全文
posted @ 2020-07-04 14:27 JonnyJiang-zh 阅读(280) 评论(0) 推荐(0) 编辑
摘要: python设计模式之责任链模式 开发一个应用时,多数时候我们都能预先知道哪个方法能处理某个特定请求。然而,情况并非总是如此。例如,想想任意一种广播计算机网络,例如最早的以太网实现。在广播计算机网络中,会将所有请求发送给所有节点(简单起见,不考虑广播域),但仅对所发送请求感兴趣的节点会处理请求。加入 阅读全文
posted @ 2020-07-04 13:44 JonnyJiang-zh 阅读(234) 评论(0) 推荐(0) 编辑