摘要:
对象池模式(Pool) 目的:对于一些创建起来颇费资源,并且一次只有一小部分被使用的对象,通过对象池可以缓存这些实例,以避免反复创建。 使用范围:一般进程池是一个典型的对象池 返回 Python设计模式-outline 示例 class ObjectPool: def __init__(self, 阅读全文
摘要:
惰性计算/延迟计算(Lazy Evaluation) 目的:类的某个属性来自于一个复杂的耗时的计算,但并不是每次都会调用。通过lazy evaluation模式,可以使该值只在真正需要读取的时候才进行一次计算 返回 Python设计模式-outline 示例 import functools cla 阅读全文
摘要:
孤例模式(Singleton)及在python中的进化版Borg模式 目的:传统孤立模式(Singleton) 保障了程序在不同位置都可以且仅可以取到同一个对象实例,即一个类仅最多存在一个实例。Borg模式通过保障同类的所有实例共享所有数据,达到了相同的目的。 传统孤立模式的实现方法很多,如装饰器、 阅读全文
摘要:
建造者模式(Builder) 建造者模式适用于那些内容复杂多变,但是建造过程相同的对象。 目标:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 使用范围:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这 阅读全文
摘要:
原型模式(Prototype) 目的: 原型模式用于减少一个项目所需的类的数量。 对于许多差异较小的子类,原型模式通过复制一个"原型实例"并做少量修改,来替代声明多个子类。 应用场景: 当新的实例更容易通过一个旧实例衍生出来,并且对这些实例的类定义会很复杂时,可以使用原型模式。 优点: 原型模式用于 阅读全文
摘要:
抽象工厂模式(Abstract Factory) 抽象工厂是对工厂模式进行了进一步封装(抽象),即,如果有多个功能类似的工厂,通过抽象工厂,来创建这些工厂。 抽象工厂方法:创建一系列相关或相互依赖抽象出来的的对象接口Interface,不需要具体指明实例化A类或B类 优点: 抽象工厂模式除了具有工厂 阅读全文
摘要:
python设计模式学习笔记 基于https://github.com/faif/python-patterns 的框架,查询了各个模式的资料,部分译名可能存在其他翻译 施工中,目前进度(17/37) 总述 1 创建型模式(Creational Patterns) 1.1 工厂(Factory) 工 阅读全文
摘要:
工厂模式(Factory) 工厂用于创建其他对象,这些对象往往从属于一个相同的范围,并且在系统中扮演相同的角色。 工厂方法:定义一个用于创建对象的接口函数,可以控制实例化哪一个具体的类。 优点:创建对象时,调用者只需要根据定义好的接口,查询对象名即可,具体对象创建的过程由工厂完成。 缺点:有新的需要 阅读全文