抽象工厂模式
摘要:定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象 和工厂方法模式相比,抽象工厂模式的每个工厂生产一套对象,而不是一个对象 优点:每个工厂创建了一个完整的产品系列,使得易于交换产品系列 有利于产品的一致性(即产品之间的约束关系) 缺点:难以支持新种类的(抽象)产品 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
阅读全文
策略模式
摘要:策略模式:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换,本模式使得算法可以独立于使用它们的客户而变化 角色: 抽象策略 具体策略 上下文:把策略对象和数据对象封装进来,以及其他不需要用户知道的数据 优点:定义了一系列可重用的算法和行为,消除了一些条件语句 缺点:客户必须了解不同的策略
阅读全文
桥接模式
摘要:1桥接模式 桥梁模式又叫桥接模式,定义如下:将抽象与实现解耦(注意此处的抽象和实现,并非抽象类和实现类的那种关系,而是一种角色的关系,这里需要好好区分一下),可以使其独立变化。在形如上例中,Pen只负责画,但没有形状,它终究是不知道要画什么的,所以我们把它叫做抽象化角色;而Shape是具体的形状,我
阅读全文
适配器模式
摘要:转载自:https://www.cnblogs.com/xiaoyuanqujing/articles/11728013.html 1适配器模式 适配器模式定义如下:将一个类的接口变换成客户端期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式和装饰模式有一定的
阅读全文
原型模式
摘要:转载自:https://www.cnblogs.com/xiaoyuanqujing/articles/11728006.html 1原型模式 原型模式定义如下:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 需要注意一点的是,进行clone操作后,新对象的构造函数没有被二次执行,
阅读全文
工厂模式
摘要:转载自:https://www.cnblogs.com/xiaoyuanqujing/articles/11727997.html 工厂类相关模式 1工厂模式、简单工厂模式、抽象工厂模式 工厂模式的定义如下:定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。其
阅读全文