Python工厂模式

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方法,最核心的方法交给子类去实现

你可能感兴趣的:(编程,python编程)