前言
第1章 简介
1.1 面向对象相关
1.2 面相对象的3个设计设计原则
第2章–单例设计模式【创建型模式】
2.1 理解单例1
2.1.1实现单例 –代码解读
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class Singleton(object): def __new__(cls): """ 判断cls类是否具有instance实例属性,如果没有就创建一个实例出来""" if not hasattr(cls, 'instance'): """ 这里比较难理解, super(Singleton, cls)会返回Singleton类的父类object的对象 super(Singleton, cls).__new__(cls)也就是父类object的对象的__new__方法, 用父类的对象创建一个对象传递给cls(本类) 然后本类cls.instance就=父类对象创建出来的对象, """ cls.instance = super(Singleton, cls).__new__(cls)
return cls.instance
s = Singleton() print("Object created", s)
s1 = Singleton() print("Object created", s1)
|
问:如何实现单例模式:
答:通过在定义类魔法方法__–new–__里面,做一个判断,判断 当前类是否存在实例化对象也就是cls.instance 如果有,就直接返回这个实例化对象,如果没有则通过super调用父类的new方法来创建一个实例 cls.instance = super(Singleton, cls).new(cls)) 然后再返回出去
UML类图简单学习笔记