① 工厂方法:
设计模式的“工厂”这个概念就是来源于我们现实中的工厂,我们把原材料、图纸等生产资料的投入到一个工厂里面,工厂就会给我们输出相应的产品,所以实现工厂方法很简单,一个函数就是一个工厂。
def fatory(drawing):
if drawing == 'BMW':
print("得到一辆宝马汽车")
return '宝马汽车'
if drawing == 'Benz':
print("得到一辆奔驰汽车")
return '奔驰汽车'
fatory('BMW')② 抽象工厂
抽象工厂顾名思义是个生产的产品比较抽象的工厂,如果工厂方法生产出来的是汽车,那么抽象工厂生产出来的应该是汽车厂,汽车厂再用来生产汽车,是工厂方法向上再抽象了一层,相当于创建工厂的工厂。
class CarFactory:
def __str__(self):
return '车厂'
class BoatFactory:
def __str__(self):
return '船厂'
class AbstractFactory:
factory = {
'boat_factory': BoatFactory,
'car_factory': CarFactory,
}
@classmethod
def get(cls, factory_name):
factory = cls.factory.get(factory_name)
print(f"得到一个{factory()}")
return factory
AbstractFactory.get('car_factory')