抽象工厂模式
摘要:定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象 和工厂方法模式相比,抽象工厂模式的每个工厂生产一套对象,而不是一个对象 优点:每个工厂创建了一个完整的产品系列,使得易于交换产品系列 有利于产品的一致性(即产品之间的约束关系) 缺点:难以支持新种类的(抽象)产品 from abc im
阅读全文
工厂方法模式
摘要:定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪一个产品类 角色:抽象工厂,具体工厂,抽象产品,具体产品 优点:每个具体产品都对应一个具体工厂类,不需要修改工厂类代码,隐藏了对象创建的实现细节 缺点:每增加一个具体产品,就必须增加一个相应的具体工厂类 from abc import ABC
阅读全文
单例模式的几种实现方式
摘要:方式一:类的new方法 class Singleton(object): __instance=None def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super().__new__(cls, *
阅读全文
模板方法模式
摘要:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 角色: 抽象类:定义抽象的原子操作(钩子操作),实现一个模板方法作为算法的骨架 具体类:实现原子操作 适用场景: 一次性实现一个算法不变的部分 各个子类中的公共行为应该被提
阅读全文
责任链模式
摘要:chain_of_responsibility 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,知道有个对象处理它为止。 角色: 抽象处理者(Handler) 具体处理者(Concrete Handler) 客户端(Client)
阅读全文
观察者模式
摘要:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式又称为发布/订阅模式 角色: 抽象主题(Subject) 具体主题(Concrete Subject)——发布者 抽象观察者(Observer) 具体观察者(Concrete Obser
阅读全文
策略模式
摘要:策略模式:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换,本模式使得算法可以独立于使用它们的客户而变化 角色: 抽象策略 具体策略 上下文:把策略对象和数据对象封装进来,以及其他不需要用户知道的数据 优点:定义了一系列可重用的算法和行为,消除了一些条件语句 缺点:客户必须了解不同的策略
阅读全文
redis持久化
摘要:持久化就是把内存中的数据保存到硬盘 持久化的实现方式 RDB 优点:是一个紧凑压缩的二进制文件,数据恢复速度快, 缺点:没法做到实时持久化,每次运行都要执行fork操作创建子进程,属于重量级操作,执行频繁成本过高,老版本的redis软件不兼容新版本RDB文件 AOF 实时地记录日志,不容易丢失数据
阅读全文