两种设计模式:
1.工厂模式:
解释:实现创建者和调用者的分离。
用于:复杂的对象的管理
代码:
#测试工厂模式
class CarFactory:
def creat_car(self,brand):
if brand == "奔驰":
return Benz()
elif brand == "宝马":
return BMW()
elif brand == "比亚迪":
return BYD()
else:
return "未知品牌,无法创建!"
class Benz:
pass
class BMW:
pass
class BYD:
pass
factory = CarFactory()
c1 = factory.creat_car("奔驰")
c2 = factory.creat_car("比亚迪")
print(c1)
print(c2)
运行结果:
<__main__.Benz object at 0x00F8FB70>
<__main__.BYD object at 0x02B5EAF0>
2.单例模式:
确保一个类只有一个实例对象,而且提供一个访问该实例的全局访问点。
代码:
#测试单例模式
#测试单例模式
class MySingleton:
__obj = None #用来存储对象名,保证只能有一个
__init_flag = True #用来判断对象的构造方法,确保构造方法也只能调用一次
def __new__(cls,*args,**kwargs):
if(cls.__obj) == None: #如果变量为空
cls.__obj = object.__new__(cls) #利用object的new方法创建一个对象
return cls.__obj #返回对象
def __init__(self,name):
if MySingleton.__init_flag: #如果标记为True
print("init>>>>>>>>")
self.name = name #构造方法进行
MySingleton.__init_flag = False
a = MySingleton("aa")
b = MySingleton("bb")
print(a)
print(b)
c = MySingleton("cc")
print(c)
运行结果:
init>>>>>>>>
<__main__.MySingleton object at 0x00E9F030>
<__main__.MySingleton object at 0x00E9F030>
<__main__.MySingleton object at 0x00E9F030>
结果分析:
由结果分析,a b c 都是一个对象,构造方法也只运行了一次。