代码
: https://github.com/youngsterxyf/mpdp-code
创建型
1. 工厂模式
场景
:
客户端1可以请求一个对象,而无需知道这个对象来自哪里
创建对象的代码和使用对象的代码解耦
我们执行单个函数,传入一个参数(提供信息表明我们想要什么),但
并不要求知道任何关于对象如何实现以及对象来自哪里的细节。
1 | import xml.etree.ElementTree as etree |
1 | class Frog: |
2. 建造者模式
场景
:
即使存在多种汉堡包(经典款、奶酪汉堡包等)和不同 包装(小盒子、中等大小盒子等),准备一个汉堡包及打包(盒子或纸袋)的流程都是相同的
指挥者和建造者分开Engineer
和 Builder
分开
1 | # coding: utf-8 |
3.原型模式
结构型
1. 适配器模式
1 | class Adapter: |
2.修饰器模式
1 | # coding: utf-8 |
3.外观模式
我们并不想把这种复杂性暴露给客户端。外观设计模式有助于隐藏 系统的内部复杂性,并通过一个简化的接口向客户端暴露必要的部分
1 | # coding: utf-8 |
4. MVC模式
1 | quotes = ('A man is not complete until he is married. Then he is finished.', |
5. 代理模式
1 | # coding: utf-8 |
行为型
1. 责任链
多个对象来处理单个请求
1 | class Event: |
2. 命令模式
1 | class Invoker { |
3.解释器模式
加减乘除用4个基本单位表示
4. 观察者模式
5. 状态模式
对象的行为依赖于它的某些属性值,状态的改变将导致行为的变化。
1 | class State(object): |
6. 策略模式
1 | class Strategy(object): |
7. 模板模式
1 | class Person(object): |