cnblogs.com/lqmblog/p/8549833.html
一.设计模式
- 设计模式是面向对象语言特有的内容
- 是面临某类问题时固定的做法
- 如GOF的23种设计模式(包括工厂模式和单例模式)
二.工厂模式(Factory Pattern):
- 实现了创建者和调用者的分离,使用专门的工厂类将选择实现类/创建对象进行统一的管理和控制
class CarFactory:
def createCar(self,brand):
if brand=='大众':
return Volkswagen()
elif brand=='丰田':
return Toyota()
elif brand=='雷诺-日产-三菱':
return Renault-Nissan-Mitsubishi()
else:
return '其他'
class Volkswagen:
pass
class Toyota:
pass
class Renault-Nissan-Mitsubishi:
pass
factory=CarFactory()
c1=factory.createCar('丰田')
c2=factory.createCar('大众')
二.单例模式(Singleton Pattern)
- 核心作用是确保一个类只有一个实例,并提供一个访问该实例的全局访问点
- 减小了系统资源的消耗:当对象的产生需消耗大量资源(读取配置文件,产生其他依赖对象),可产生一个’单例对象’,然后永久驻留内存
class MySingleton:
__obj=None
__init_flag=True
def __init__(self,name):
if MySingleton.__init_flag==True:
print('init')
self.name=name
MySingleton.__init_flag=False
def __new__(self,*args,**kwargs):
if self.__obj==None:
self.__obj=object.__new__(self)
return self.__obj
a=MySingleton('a')
b=MySingleton('b')
print(a,type(a))
print(b,type(b))
#结果:
#init
#<__main__.MySingleton object at 0x00000200AB5D7208> <class '__main__.MySingleton'>
#<__main__.MySingleton object at 0x00000200AB5D7208> <class '__main__.MySingleton'>