Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
64 lines (31 loc) · 2.03 KB

File metadata and controls

64 lines (31 loc) · 2.03 KB
Copy raw file
Download raw file
Outline
Edit and raw actions

Python设计模式

代码直戳: https://github.com/faif/python-patterns

创建型模式

工厂方法

实例 -> 类 -> 类工厂

抽象工厂

简单来说就是把一些具有相同方法的类再进行封装,抽象共同的方法以供调用.是工厂方法的进阶版本.

实例 -> 类 -> 类工厂 -> 抽象工厂

惰性初始化 Lazy evaluation

这个Python里可以使用@property实现,就是当调用的时候才生成.

生成器 Builder

Builder模式主要用于构建一个复杂的对象,但这个对象构建的算法是稳定的,对象中的各个部分经常变化。Builder模式主要在于应对复杂对象各个部分的频繁需求变动。但是难以应对算法的需求变动。这点一定要注意,如果用错了,会带来很多不必要的麻烦。

重点是将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

简单的说:子对象变化较频繁,对算法相对稳定。

单例模式 Singleton

一个类只有一个实例

原型模式

特点是通过复制一个已经存在的实例来返回新的实例,而不是新建实例.

多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据.

对象池 Object pool

一个对象池是一组已经初始化过且可以使用的对象,而可以不用在有需求时创建和销毁对象。池的用户可以从池子中取得对象,对其进行操作处理,并在不需要时归还给池子而非销毁 而不是销毁它.

在Python内部实现了对象池技术.例如像小整型这样的数据引用非常多,创建销毁都会消耗时间,所以保存在对象池里,减少开销.

结构型模式

修饰模型 Decorator

Python里就是装饰器.

代理模式 Proxy

例如Python里的引用计数.

行为型模式

迭代器

迭代容器里所有的元素.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.