一、单例模式
1、设计模式就是一种编程套路
使用特定的套路得到特定的效果
2、什么时单例设计模式
单例模式就是对一个类,只获取其唯一的类实例对象,持续复用它
节省内存
节省创建对象的开销
非单例模式效果:
# 演示单例模式的效果
# 非单例效果
class StrTools:
pass
s1=StrTools()
s2=StrTools()
print(s1)
print(s2)
# 输出地址不同
# <__main__.StrTools object at 0x0000023A76357190>
# <__main__.StrTools object at 0x0000023A76357130>
输出结果:
输出的地址不同
单例模式效果:
创建str_tools_py.py Test1.py Test2.py 三个文件
str_tools_py.py
class StrTools():
pass
str_tool=StrTools()
Test1.py
from str_tools_py import str_tool
s1=str_tool
s2=str_tool
print(s1)
print(s2)
Test2.py
from str_tools_py import str_tool
s1=str_tool
s2=str_tool
print(s1)
print(s2)
运行结果:
Test1.py中:
Test2.py中:
可以看出 不论实在 Test1.py中 还是在 Test2.py中 输出对象的地址是相同的
二、工厂模式
1、工厂模式:
将对象的创建由使用原生本身创建
转换到由特定的工厂方法来创建
2、好处
大批量创建对象的时候有统一的入口,易于代码维护
当发生修改,仅修改工厂类的创建方法即可
符合现实世界的模式,即由工厂来制作产品(对象)
#工厂模式
class Person:
pass
class Worker(Person):
pass
class Student(Person):
pass
class Teacher(Person):
pass
class PersonFactory:
def get_person(self,p_type):
if p_type=='w':
return Worker
if p_type=='s':
return Student
else:
return Teacher
pf=PersonFactory()
worker=pf.get_person('w')
stu=pf.get_person('s')
teacher=pf.get_person('t')