Creational Patterns
A collection of design patterns and idioms in Python.
abstract factory (抽象工厂)
在 Java 和其他语言中,抽象工厂模式用于提供接口去创建相关对象,而不需要显式指定它们的类。
在 Python 中,在正常情况下我们可以简单地使用类本身。如果有多种不同类型对象需要创建,使用抽象工厂模式。以实现一个宠物店的例子说明,在一个抽象工厂类里实现多个关联对象的创建。
1 | import random |
borg (实例中具有共享状态的单例)
Borg 模式(也称为 Monostate 模式)是一种方式实现单例行为,但不是只有一个实例。在一个类中,有多个实例共享相同的状态。在 Python 中,实例属性存储在一个属性字典名为 __dict__。通常,每个实例都会有它自己的字典,但 Borg 模式修改了这一切实例具有相同的字典。在此示例中,__sharedstate 属性将是字典在所有实例之间共享,这通过指定来确保初始化新的 \_sharedstate 到 \_dict__ 变量实例(即 __init__ 方法)
1 | class Bord(object): |
builder 建造者模式
当一个对象必须经过多个步骤来创建,并且要求不同的参数可以产生不同的表现的时候, 我们可以使用建造者模式。
1 | # Abstract Building |
factory method 工厂方法
工厂方法模式能够封装具体类型的实例化,抽象的 get_localizer 提供了一个创建对象的工厂方法。
1 | class ChineseGetter(object): |
延迟初始化
Python 对象的延迟初始化是指,当它第一次被创建时才进行初始化,或者保存第一次创建的结果,然后每次调用的时候直接返回该结果。延迟初始化主要用于提高性能,避免浪费计算,并减少程序的内存需求。
1 | from __future__ import print_function |