一、单例模式要点
一 是某个类只能有一个实例
二 是它必须自行创建这个实例
三 是它必须自行向整个系统提供这个实例‘
四 单例中无论创建几个对象,都是对同一个内存对象进行操作的
单例模式 :确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。
单例模式 简单代码及魔法方法
class Test(object):
__instance = None
def __init__(self): #初始化属性
print("----init方法----")
def __del__(self): #删除对象调用
print("----del方法----")
def __str__(self): #打印对象调用,要有返回值
print("----str方法----")
def __new__(cls): #创建对象,并返回对象引用
print("----new方法----")
if cls.__instance == None:
cls.__instance = object.__new__(cls)
return cls.__instance
test1 = Test()
print(id(test1))
test2 = Test()
print(id(test2))
# 实例化一个单例
class Singleton(object):
__instance = None
__first_init = False
def __new__(cls, age, name):
if not cls.__instance:
cls.__instance = object.__new__(cls)
return cls.__instance
def __init__(self, age, name):
if not self.__first_init:
self.age = age
self.name = name
Singleton.__first_init = True
a = Singleton(18, "dongGe")
b = Singleton(8, "dongGe")
print(id(a))
print(id(b))
print(a.age)
print(b.age)
a.age = 19
print(b.age)
运行结果:
ubuntu@ubuntu-VirtualBox:~/桌面/2_1805/13day$ python3 01-简书单例模式.py 140168837839672
140168837839672
18
18
19
单例模式优点
使用 设计模式 是为了可重用代码、让代码更容易被他人理解、保证代码可靠性
网友评论