介绍:
工厂模式是23种设计模式中最常用的模式之一,它又可以细分为简单工厂,工厂方法和抽象工厂。
工厂模式可以解耦,把实例的创建和使用过程分开。其次,工厂模式将类实例化过程统一管理起来了,方便以后维护。
① 工厂方法:
定义:工厂方法定义了一个创建对象的接口,但由子类决定要实例化的类是哪个。工厂方法让类把实例化推迟到子类
设计模式的“工厂”这个概念就是来源于我们现实中的工厂,我们把原材料、图纸等生产资料的投入到一个工厂里面,工厂就会给我们输出相应的产品,所以实现工厂方法很简单,一个函数就是一个工厂。
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')
参考: https://www.jianshu.com/p/4c699c7a62c2