class CarStore(object): def __init__(self): self.factory=Factory() def order(self,car_type): return self.factory.select_car_by_type(car_type) class Factory(object): def select_car_by_type(self,car_type): if car_type=="桑塔纳": return Suonata() elif car_type=="b宝马": return Baoma()
买车的时候需要先去CarStore 然后让CarStore通过工厂得到想要的车 如果需要增加工厂生产的车的品种,那么需要修改Factory类
简单工厂模式(通过一个类达到分离的模式就是简单工厂模式,所谓模式:直白的说就是一种设计的方法或规律)实现了代码的解耦,修改工厂类而不需要进行CarStore的修改
除了简单工厂模式 还有代理模式 监听模式等
方法在父类中不进行实现 而在子类中实现,父类仅仅提供了一个模式-----工厂方法模式 如上述BMWCarStore(CarStore)调用BMW工厂进行生产 ,order在CarStore中,而具体调用生产的方法在BMWCarStore中,通过bmw=BMWCarStore()创建对象后,bmw.order()调用父类中的order方法 选择汽车厂的方法又是通过并没有在CarStore中具体实现 ,而是在BMWCarStore中实现
class CarStore(object): def select_car(self,car_type): pass def order(self,car_type): return self.select_car(car_type) class BMWCareStore(CarStore): def select_car(self,car_type): return BMWCarFactory().select_car_by_type(car_type) bmw=BMWCareStore() bmw_car=bmw.order("711")
CarStore本身不知道具体会买宝马的车还是大众的车,那么仅仅提供order方法,最核心的方法交给子类去实现