python设计模式第2版

目录

第1章 设计模式简介 1 
1.1 理解面向对象编程 1 
1.1.1 对象 2 
1.1.2 类 2 
1.1.3 方法 2 
1.2 面向对象编程的主要概念 3 
1.2.1 封装 3 
1.2.2 多态 3 
1.2.3 继承 4 
1.2.4 抽象 4 
1.2.5 组合 5 
1.3 面向对象的设计原则 5 
1.3.1 开放/封闭原则 6 
1.3.2 控制反转原则 6 
1.3.3 接口隔离原则 6 
1.3.4 单一职责原则 7 
1.3.5 替换原则 7 
1.4 设计模式的概念 7 
1.4.1 设计模式的优点 8 
1.4.2 设计模式的分类 9 
1.4.3 上下文—设计模式的适用性 9 
1.5 动态语言的设计模式 9 
1.6 模式的分类 10 
1.6.1 创建型模式 10 
1.6.2 结构型模式 10 
1.6.3 行为型模式 11 
1.7 小结 11 
第2章 单例设计模式 12 
2.1 理解单例设计模式 12 
2.2 单例模式中的懒汉式实例化 14 
2.3 模块级别的单例模式 15 
2.4 Monostate单例模式 15 
2.5 单例和元类 16 
2.6 单例模式Ⅰ 18 
2.7 单例模式Ⅱ 20 
2.8 单例模式的缺点 21 
2.9 小结 22 
第3章 工厂模式:建立创建对象的工厂 23 
3.1 了解工厂模式 23 
3.2 简单工厂模式 24 
3.3 工厂方法模式 26 
3.3.1 实现工厂方法 27 
3.3.2 工厂方法模式的优点 29 
3.4 抽象工厂模式 30 
3.5 工厂方法与抽象工厂方法 33 
3.6 小结 34 
第4章 门面模式—与门面相适 35 
4.1 理解结构型设计模式 35 
4.2 理解门面设计模式 36 
4.3 UML类图 37 
4.3.1 门面 37 
4.3.2 系统 38 
4.3.3 客户端 38 
4.4 在现实世界中实现门面模式 38 
4.5 最少知识原则 42 
4.6 常见问答 42 
4.7 小结 43 
第5章 代理模式—控制对象的访问 44 
5.1 理解代理设计模式 44 
5.2 代理模式的UML类图 46 
5.3 了解不同类型的代理 47 
5.3.1 虚拟代理 48 
5.3.2 远程代理 48 
5.3.3 保护代理 48 
5.3.4 智能代理 48 
5.4 现实世界中的代理模式 49 
5.5 代理模式的优点 52 
5.6 门面模式和代理模式之间的比较 52 
5.7 常见问答 53 
5.8 小结 53 
第6章 观察者模式—了解对象的情况 54 
6.1 行为型模式简介 54 
6.2 理解观察者设计模式 55 
6.3 现实世界中的观察者模式 58 
6.4 观察者模式的通知方式 62 
6.4.1 拉模型 62 
6.4.2 推模型 62 
6.5 松耦合与观察者模式 62 
6.6 观察者模式:优点和缺点 63 
6.7 常见问答 64 
6.8 小结 64 
第7章 命令模式—封装调用 65 
7.1 命令设计模式简介 65 
7.2 了解命令设计模式 66 
7.3 实现现实世界中命令模式 69 
7.4 命令模式的优缺点 73 
7.5 常见问答 74 
7.6 小结 74 
第8章 模板方法模式—封装算法 75 
8.1 定义模板方法模式 75 
8.1.1 了解模板方法设计模式 77 
8.1.2 模板方法模式的UML类图 79 
8.2 现实世界中的模板方法模式 81 
8.3 模板方法模式—钩子 84 
8.4 好莱坞原则与模板方法 85 
8.5 模板方法模式的优点和缺点 85 
8.6 常见问答 86 
8.7 小结 86 
第9章 模型—视图—控制器—复合模式 87 
9.1 复合模式简介 87 
9.2 模型—视图—控制器模式 88 
9.2.1 模型—了解应用程序的情况 90 
9.2.2 视图—外观 90 
9.2.3 控制器—胶水 90 
9.3 MVC设计模式的UML类图 92 
9.4 现实世界中的MVC模式 94 
9.4.1 模块 94 
9.4.2 MVC模式的优点 101 
9.5 常见问答 101 
9.6 小结 102 
第10章 状态设计模式 103 
10.1 定义状态设计模式 103 
10.1.1 理解状态设计模式 104 
10.1.2 通过UML图理解状态设计模式 105 
10.2 状态设计模式的简单示例 106 
10.3 状态模式的优缺点 110 
10.4 小结 111 
第11章 反模式 112 
11.1 反模式简介 112 
11.2 软件开发反模式 113 
11.2.1 意大利面条式代码 114 
11.2.2 金锤 114 
11.2.3 熔岩流 115 
11.2.4 复制粘贴或剪切粘贴式编程 115 
11.3 软件架构反模式 116 
11.3.1 重新发明轮子 116 
11.3.2 供应商套牢 117 
11.3.3 委员会设计 117 
11.4 小结 118

下载地址:https://pan.baidu.com/s/1r7hu4r9Z5ao1oWzlSdqFPw

关注微信公众号获取提取码:

  输入:pyzf   获取提取码

python设计模式第2版的更多相关文章

  1. 浅谈Python设计模式 - 原型模式

    声明,本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在<精通Python设计模式>中把设计模式分为三种类型: 创建型模式 ...

  2. python设计模式之门面模式

    一.结构型设计模式 门面模式与单例模式,工厂模式不同,它是一种结构型模式. 结构型模式描述如何将对象和类组合成更大的结构 结构型模式是一种能够简化设计工作的模式,它能找出更简单的方法来认识或表示实体之 ...

  3. python设计模式之工厂模式

    一.理解工厂模式 在面向对象编程中,术语“工厂”表示一个负责创建替他类型对象的类.通常情况下,作为一个工厂的类有一个对象以及与它关联的多个方法.客户端使用某些参数调用此方法,之后,工厂会据此创建所需类 ...

  4. python设计模式之解释器模式

    python设计模式之解释器模式 对每个应用来说,至少有以下两种不同的用户分类. [ ] 基本用户:这类用户只希望能够凭直觉使用应用.他们不喜欢花太多时间配置或学习应用的内部.对他们来说,基本的用法就 ...

  5. Python设计模式: 最佳的"策略"模式实践代码

    Python设计模式: 最佳的"策略"模式实践代码 今天抽空看了下流畅的python,发现里面介绍了不少python自带的库的使用实例,用起来非常的优雅. 平时用Python来写爬 ...

  6. 【Head-First设计模式】C#版-学习笔记-开篇及文章目录

    原文地址:[Head-First设计模式]C#版-学习笔记-开篇及文章目录 最近一年断断续续的在看技术书,但是回想看的内容,就忘了书上讲的是什么东西了,为了记住那些看过的东西,最好的办法就是敲代码验证 ...

  7. 笨办法学 Python (第三版)(转载)

    笨办法学 Python (第三版) 原文地址:http://blog.sina.com.cn/s/blog_72b8298001019xg8.html   摘自https://learn-python ...

  8. Python之路,Day4 - Python基础4 (new版)

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  9. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

随机推荐

  1. PLSQl的使用技巧与快捷键

    最近在开发过程中,遇到一些麻烦,就是开发效率问题,有时候其他同事使用PLSQL 编程效率明显高于自己,观察了好久,才发现他使用PLSQL 已经很长时间了而且,他自己也在其中添加了好多快捷方式,     ...

  2. 2019ICPC南京网络赛B super_log——扩展欧拉定理

    题目 设函数 $$log_a*(x) = \begin{cases}-1, & \text{ if } x < 1 \\ 1+log_a*(log_ax) & \text{ if ...

  3. 01-学习vue前的准备工作(let和const)

    es6语法:let和const es6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效 <!DOCYTPE html> <ht ...

  4. MySQL-linux系统下面的配置文件

    一般linux 上都放在 /etc/my.cnf   ,window 上安装都是默认可能按照上面的路径还是没找到, window 上  可以登录到mysql中  使用   show variables ...

  5. COM Error---HRESULT

    一.COM Error 调用COM接口产生的错误.几乎所有的COM函数和接口方法都返回类型为HRESULT的值.HRESULT(用于结果句柄)是返回成功.警告和错误值的一种方法.HRESULTs实际上 ...

  6. bg/fg/jobs

    用于将某个任务放置后台运行,一般会与 ctrl+ z , fg, & 符号联用. 典型的场景就是将耗时的任务放于后台运行,例如打包某个占用空间大的目录,

  7. 开始编写Makefile

    1.Makefile 的编写规则一 目标列表:关联性列表 命令列表 目标列表:可以是多个以空格隔开多个目标文件 关联列表页称为先决条件:同样是用个或多个空格分开的目标文件 命令列表:用<tab& ...

  8. A2T和T2A,===string和CString互转 方法一:--用宏的方式

    USES_CONVERSION它是在堆栈上分配空间的,也就是说你在你在函数未结束就不会被释放掉.所有要注意不要在一个函数中用while循环执行它,不然栈空间就马上会分配完(栈空间一般只有2M,很小). ...

  9. P5049 旅行(数据加强版)(基环树)

    做法 把环找出来,如果在环上(u,v)两点的时候,u的其他子树都走完了,v上第一个还有除v存在的子树没走完的 祖先,祖先的最小子节点小于v,则回去 Code #include<bits/stdc ...

  10. CF891C Envy(离线/在线+可撤销并查集/并查集/LCT)

    前置知识 最小生成树及证明 做法 每个不同权值没影响,仅需判断该次询问每种权值是否在"小于该权值的所有边加完"之后,可以全部加进来 离线:询问的所有边全堆到一起,按权值排序,然后同 ...