摘要: 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) 编辑
摘要: python设计模式之代理模式 在某些应用中,我们想要在访问某个对象之前执行一个或多个重要的操作,例如,访问敏感信息——在允许用户访问敏感信息之前,我们希望确保用户具备足够的权限。操作系统中也存在类似的情况,用户必须具有管理员权限才能在系统中安装新程序。 上面提到的重要操作不一定与安全问题相关。延迟 阅读全文
posted @ 2020-07-02 11:44 JonnyJiang-zh 阅读(251) 评论(0) 推荐(0) 编辑
摘要: python设计模式之模型-视图-控制器模式 关注点分离( Separation of Concerns, SoC)原则是软件工程相关的设计原则之一。 SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注点。分层设计中的层次(数据访问层、业务逻辑层和表示层等)即是关注点的例子 阅读全文
posted @ 2020-07-02 01:10 JonnyJiang-zh 阅读(432) 评论(0) 推荐(0) 编辑
摘要: python设计模式之享元模式 由于对象创建的开销,面向对象的系统可能会面临性能问题。性能问题通常在资源受限的嵌入式系统中出现,比如智能手机和平板电脑。大型复杂系统中也可能会出现同样的问题,因为要在其中创建大量对象(也可能是用户),这些对象需要同时并存。 这个问题之所以会发生,是因为当我们创建一个新 阅读全文
posted @ 2020-07-02 00:45 JonnyJiang-zh 阅读(170) 评论(0) 推荐(0) 编辑
摘要: python设计模式之外观模式 系统会随着演化变得非常复杂,最终形成大量的(并且有时是令人迷惑的)类和交互,这种情况并不少见。许多情况下,我们并不想把这种复杂性暴露给客户端。外观设计模式有助于隐藏系统的内部复杂性,并通过一个简化的接口向客户端暴露必要的部分。本质上, 外观( Facade)是在已有复 阅读全文
posted @ 2020-07-02 00:26 JonnyJiang-zh 阅读(188) 评论(0) 推荐(0) 编辑