![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 73
欢乐的小猪
当你认为你应该成为怎样的人,你就会紧张;当你做你自己,你就会放松
展开
-
UML类图之间的关系及其符号表示
UML分静态图和动态图两种,常用的静态图有:用例图、类图、包图、对象图、部署图;常用的动态图有:顺序图、通信图、状态机图、活动图。这种关系是一种非常弱、临时性的关系。其应用场合包括系统的词汇建模、对简单的协作建模、对逻辑数据库模式建模。类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解。在类图中,类和类之间的关系有继承(实现)、关联(组合、聚合、一般关联),依赖。聚合(aggregation):部分与整体的关系。组合(composition):部分与整体的关系。原创 2024-05-09 02:16:06 · 368 阅读 · 0 评论 -
python 实现 修饰器模式
是原创 2018-06-12 14:04:49 · 865 阅读 · 0 评论 -
python 实现 命令模式
本文的目录地址原创 2018-06-27 12:00:41 · 1373 阅读 · 0 评论 -
python 实现 解释器模式
本文的目录地址本文的代码地址对每个应用来说,至少有以下两种不同的用户分类。 基本用户:这类用户只希望能够凭直觉使用应用。他们不喜欢花太多时间配置或学习应用的内部。对他们来说,基本的用法就足够了。 高级用户:这些用户,实际上通常是少数,不介意花费额外的时间学习如何使用应用的高级特性。如果知道学会之后能得到以下好处,他们甚至会去学习一种配置(或脚本)语言。 能够更好地控制一...原创 2018-07-25 14:36:29 · 1023 阅读 · 0 评论 -
python 实现 观察者模式
本文的目录地址本文的代码地址有时,我们希望在一个对象的状态改变时更新另外一组对象。在MVC模式中有这样一个非常常见的例子,假设在两个视图(例如,一个饼图和一个电子表格)中使用同一个模型的数据,无论何时更改了模型,都需要更新两个视图。这就是观察者设计模式要处理的问题。观察者模式描述单个对象(发布者,又称为主持者或可观察者)与一个或多个对象(订阅者,又称为观察者)之间的发布—订阅关系。在MV...原创 2018-07-25 16:57:39 · 1194 阅读 · 0 评论 -
python 实现 状态模式
本文的目录地址本文的代码地址面向对象编程着力于在对象交互时改变它们的状态。在很多问题中,有限状态机(通常名为状态机)是一个非常方便的状态转换建模(并在必要时以数学方式形式化)工具。首先,什么是状态机?状态机是一个抽象机器,有两个关键部分,状态和转换。状态是指系统的当前(激活)状况。例如,假设我们有一个收音机,其两个可能的状态是在调频波段(FM)或调幅波段(AM)上调节。另一个可能的状态是从...原创 2018-07-26 16:35:55 · 4411 阅读 · 0 评论 -
python 实现 模板模式
本文的目录地址本文的代码地址编写优秀代码的一个要素是避免冗余。在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具。回想策略模式中的sorted()例子。sorted()函数非常通用,可使用任意键来对多种数据结构(列表、元组和命名元组等)进行排序。这是一个良好函数的定义。sorted()这样的函数属于理想的案例。现实中,我们没法始终写出100%通用的代码。许多算法都有一些(...原创 2018-09-06 13:56:02 · 4076 阅读 · 1 评论 -
python 实现 策略模式
本文的目录地址本文的代码地址大多数问题都可以使用多种方法来解决。以排序问题为例,对于以一定次序把元素放入一个列表,排序算法有很多。通常来说,没有公认最适合所有场景的算法。一些不同的评判标准能帮助我们为不同的场景选择不同的排序算法,其中应该考虑的有以下几个。需要排序的元素数量算法的最佳、平均、最差时间复杂度算法的空间复杂度算法的稳定性算法的代码实现复杂度可能还有更多的评判标准值得考虑,但重要的是,我...原创 2018-07-05 17:23:55 · 1547 阅读 · 0 评论 -
python 实现 责任链模式
是原创 2018-06-25 23:17:51 · 1442 阅读 · 2 评论 -
python 实现 模型—视图—控制器模式(MVC)
本文的目录地址原创 2018-06-25 11:09:20 · 5451 阅读 · 0 评论 -
python 实现 享元模式
本文的目录地址本文的代码地址由于对象创建的开销,面向对象的系统可能会面临性能问题。性能问题通常在资源受限的嵌入式系统中出现,比如智能手机和平板电脑。大型复杂系统中也可能会出现同样的问题,因为要在其中创建大量对象(用户),这些对象需要同时并存。这个问题之所以会发生,是因为当我们创建一个新对象时,需要分配额外的内存。虽然虚拟内存理论上为我们提供了无限制的内存空间,但现实却并非如此。如果一个系统耗尽了所...原创 2018-06-05 17:39:12 · 641 阅读 · 0 评论 -
python 实现 外观模式
不错!这一方案同时具备可读的代码和可接受的性能。此时,你可能想争论说这不是修饰器模式,因为我们并不是在运行时应用它。被修饰的函数确实无法取消修饰,但仍然可以在运行时决定是否执行修饰器。这个有趣的练习就留给你来完成吧。使用修饰器进行一层额外的封装,基于某个条件来决定是否执行真正的修饰器。修饰器的另一个有趣的特性是可以使用多个修饰器来修饰一个函数。本章没有涉及这一特性,因此这是另一个练习,创建一个修饰...原创 2018-06-15 14:45:25 · 765 阅读 · 0 评论 -
python实现设计模式
本文的代码地址什么是设计模式软件工程中,设计模式是指软件设计问题的推荐方案。设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。需要谨记的一点是:设计模式是高层次的方案,与具体实现细节无关(如算法,数据结构,网页等)。设计模式最重要的部分可能就是它的名称。给模式起名的好处是大家相互交流时有共同的词汇。随着编程语言的演进,一些设计模式(如单例)也随之过时,甚至成了反模式...原创 2018-06-04 15:44:44 · 1860 阅读 · 1 评论 -
python 实现 工厂模式
本文目录地址本文代码地址创建型设计模式处理对象创建相关的问题,目标是当直接创建对象(在Python中是通过__init__()函数实现的)不太方便时,提供更好的方式。在工厂设计模式中,客户端①可以请求一个对象,而无需知道这个对象来自哪里;也就是,使用哪个类来生成这个对象。工厂背后的思想是简化对象的创建。与客户端自己基于类实例化直接创建对象相比,基于一个中心化函数来实现,更易于追踪创建了哪...原创 2018-09-03 15:51:21 · 5619 阅读 · 0 评论 -
python 实现 建造者模式
本文目录地址本文代码地址想象一下,我们想要创建一个由多个部分构成的对象,而且它的构成需要一步接一步地完成。只有当各个部分都创建好,这个对象才算是完整的。这正是建造者设计模式(Builder design pattern)的用武之地。建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造过程可用于创建多个不同的表现。我们来看个实际的例子,这可能有助于理解建造者模式的目的。假设我...原创 2018-09-04 13:10:13 · 1495 阅读 · 0 评论 -
python 实现 适配器模式
本文的目录地址:https://blog.csdn.net/hbu_pig/article/details/80431304结构型设计模式处理一个系统中不同实体(比如,类和对象)之间的关系,关注的是提供一种简单的对象组合方式来创造新功能。适配器模式(Adapter pattern)是一种结构型设计模式,帮助我们实现两个不兼容接口之间的兼容。首先,解释一下不兼容接口的真正含义。如果我们希望把一个老组...原创 2018-06-04 15:26:36 · 3276 阅读 · 0 评论 -
python 实现 原型模式
本文的目录地址本文的代码地址有时,我们需要原原本本地为对象创建一个副本。举例来说,假设你想创建一个应用来存储、分享、编辑(比如,修改、添加注释及删除)食谱。用户Bob找到一份蛋糕食谱,在做了一些改变后,觉得自己做的蛋糕非常美味,想要与朋友Alice分享这个食谱。但是该如何分享食谱呢?如果在与Alice分享之后,Bob想对食谱做进一步的试验,Alice手里的食谱也能跟着变化吗?Bob能...原创 2018-09-05 15:59:01 · 1029 阅读 · 0 评论 -
python 实现 代理模式
本文的目录地址原创 2018-06-21 13:30:59 · 5177 阅读 · 3 评论 -
单例模式(Singleton Pattern)
第一种实现方式:public class MyClass1 { private static MyClass1 uniqueInstance = new MyClass1(); private MyClass1() { } public static MyClass1 GetInstance() {原创 2012-11-20 16:53:44 · 1020 阅读 · 1 评论