2022.08.19 DAY35
设计模式_工厂模式实现
- 实现创建者和使用者的分离。
测试代码:
class Benz:
pass
class BMW:
pass
class BYD:
pass
class CarFactory:
def create_car(self, brand):
if brand == "奔驰":
return Benz()
elif brand == "宝马":
return BMW()
elif brand == "比亚迪":
return BYD()
else:
return "未知品牌,无法创建"
def test():
factory = CarFactory()
c1 = factory.create_car("奔驰")
c2 = factory.create_car("宝马")
c3 = factory.create_car("比亚迪")
print(c1)
print(c2)
print(c3)
if __name__ == "__main__":
test()
运行结果:
<__main__.Benz object at 0x0000024F64232340>
<__main__.BMW object at 0x0000024F642325E0>
<__main__.BYD object at 0x0000024F64357610>
单例模式
- 核心作用就是确保一个类只有一个实例,并且提供一个访问该实例的全局访问点。
- 减少对系统资源的开销。
测试代码:
class MySimgleton:
__obj = None # 类属性
__init_flag = True
def __new__(cls, *args, **kwargs):
if cls.__obj == None:
cls.__obj = object.__new__(cls)
return cls.__obj
def __init__(self, name):
if MySimgleton.__init_flag:
print("init......")
self.name = name
MySimgleton.__init_flag = False
def test():
a = MySimgleton("aa")
b = MySimgleton("bb")
print(a)
print(b)
c = MySimgleton("cc")
print(c)
if __name__ == "__main__":
test()
运行结果;
init......
<__main__.MySimgleton object at 0x000001E8376A7DC0>
<__main__.MySimgleton object at 0x000001E8376A7DC0>
<__main__.MySimgleton object at 0x000001E8376A7DC0>