单例模式
比如工具类,进需要一个实例,即可以在各处处理。用以节省创建类对象的开销和内存的开销。
保证一个类只有一个实例,而客户可以从一个众所周知的访问点访问它。
实现一个简单的单例
在一个python文件中定义一个类,并创建该类的对象
class StrTools:passstr_tool = StrTools()
在另一个python文件中定义导入该类对象使用
from oper_mysql import str_tools1 = str_tool
s2 = str_tool
# True
print(s1 == s2)
# <oper_mysql.StrTools object at 0x03ECEB90>
print(s1)
# <oper_mysql.StrTools object at 0x03ECEB90>
print(s2)
# 35402256
print(id(s1))
# 35402256
print(id(s2))
工厂模式
class Person:passclass Worker(Person):passclass Student(Person):passclass Teacher(Person):passclass Factory:def get_person(self, p_type):if p_type == 'w':return Worker()elif p_type == 's':return Student()else:return Teacher()factory = Factory()
worker = factory.get_person('w')
student = factory.get_person('s')
teacher = factory.get_person('t')
使用get_person方法去创建具体的类对象。
优点:
1.大批量创建对象的时候有统一的入口,易于代码维护。
2.当发生修改,仅修改工厂类的创建方法即可。
3.符合现实世界的模式,即由工厂来制作产品。