Python 面向对象的设计模式

调用父类元素的方法

1、super().__init__()        可以不加self   要传参
2、父类名.__init__(self)   必须加self    要传参
3、super(子类名,self).__init__()可以不加self   要传参

面向对象应用--设计模式

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。
1. 简单工厂模式
1. 使用函数实现解耦:简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
简单工厂模式的好处:
工厂函数、工厂类对具体的生成环节进行了封装,这样有利于代码的后需扩展,即把功能划分的更具体,

工厂模式有两种:

1.简单工厂模式:由一个工厂统一管理子类对象,如果再添加子类,则需要改变工厂
2.工厂方法模式: 一个子类类型对应一个工厂,好处:不会影响整体使用
定义了一个创建对象的接口(可以理解为函数),但由子类决定要实例化的类是哪一个,工厂方法模式让类的实例化推迟到子类,抽象的CarStore提供了一个选择创建对象的方法select_car,也叫作工厂方法。
__new__方法(重新创建类对象)
其实真正的第一个动作:__new__  ,通常__new__方法由python解释器完成了
object将__new__()方法定义为静态方法,并且至少需要传递一个参数cls,cls表示需要实例化的类,此参数在实例化时由Python解释器自动提供。
# __new__   参数不是self而是cls   参数就是模型对象  ---- 类对象
使用该方法创建当前实例对象,一般不重写,就算重写也是调用父类的__new__方法,注意:一定要返回创建的对象如果没有返回,__init__方法将不会被Python解释器调用 cls是类对象
注意:
__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例;或者直接是object的__new__出来的实例。
__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值。

单例模式

确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。怎么保证打印的名字也是同一个呢?

Python 面向对象的设计模式_第1张图片

代理模式

代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
代理模式一般涉及到的角色有: 
抽象角色:声明真实对象和代理对象的共同基类(接口); 
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的基类(接口)以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。 
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。

你可能感兴趣的:(python)