07 2022 档案
摘要:前端控制器(Front Controller) 前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。 返回 Python设计模式-
阅读全文
摘要:代理模式(Proxy) 目的:代理模式用于需要给一个类增加一些调用方式,又不想改变其接口。常用于登录控制。 角色: Real Sbuject: 被代理的类 Proxy: 代理 返回 Python设计模式-outline 示例 from typing import Union class Subjec
阅读全文
摘要:MVC模式(Model-View-Controller) MVC模式的名称来自于切分软件应用的三个部分,即模型部分、视图部分和控制器部分。MVC被认为是一种架构设计而不是实际模式,但由于其非常重要,在介绍设计模式时无法绕过它。 一方面,MVC是一个非常古早的模式,当时的计算机硬件环境和当前有着较大的
阅读全文
摘要:享元模式(Flyweight) 享元模式是一个考虑系统性能的设计模式,通过使用享元模式可以节约内存空间,提高系统的性能。 享元模式以共享的方式高效地支持大量的细粒度对象,享元对象能做到共享的关键是区分内部状态(Internal State)和外部状态(External State)。 内部状态是存储
阅读全文
摘要:外观模式(Facade) 目的:外观模式用于给复杂系统提供一套简单一致的的接口,以实现某些复杂功能。 使用场景:维护一个遗留的大型系统是,可能这个系统已经非常难以维护和扩展,但是它包含很重要的功能,新的开发必须依赖于它,这样增加外观Facade类,为系统封装一个比较清晰简单的接口,让新系统与Faca
阅读全文
摘要:装饰模式(decorator) 装饰模式是在原有对象的基础上,动态增加一个新的特性。与继承的最大区别是,这种新增特性是比较泛化的,可以被多种对象增加。 返回 Python设计模式-outline 示例 # 原对象 class TextTag: """Represents a base text ta
阅读全文
摘要:组合模式(Composite) 组合模式是用来描述的是一组相同类型的对象的关系。一个组合模式类的实例是用来组合一系列对象(通常是树型结构),以便来描述部分和整体的关系。 优点: 定义了基本对象和组合对象的关系结构(一般为树),基本对象可以被组合成复杂的组合对象,且组合对象可以进一步被组合。 对调用来
阅读全文
摘要:桥接模式(Bridge) 目标:将抽象化(Abstraction)与实现化(Implementation)解耦,使得二者可以独立地变化。 优点:类和示例分离,二者可以独立设计,不受约束 缺点:系统可读性降低 结构 抽象化(Abstraction): 抽象化角色给出定义,并保存一个对实现化角色的引用。
阅读全文
摘要:配适器模式(Adapter) 目的:配适器主要用于,在一个已有类的基础上,封装一个新的符合协议的接口,使这个类可以按照已知协议调用 返回 Python设计模式-outline 示例 from typing import Callable, TypeVar # TypeVar("T) 意思是,可以是任
阅读全文
摘要:三层架构模式(3-tier) 三层架构指: 表现层(presentation layer): 也称UI层,程序运行的入口,如果程序包括界面,界面就放在这一层。 业务逻辑层(business logic layer):王城程序的业务逻辑,对数据访问层进行调用,将从数据访问层中获取的数据反馈给表现层 数
阅读全文
摘要:对象池模式(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) 工厂用于创建其他对象,这些对象往往从属于一个相同的范围,并且在系统中扮演相同的角色。 工厂方法:定义一个用于创建对象的接口函数,可以控制实例化哪一个具体的类。 优点:创建对象时,调用者只需要根据定义好的接口,查询对象名即可,具体对象创建的过程由工厂完成。 缺点:有新的需要
阅读全文