# 定义一个基本的4S店类class CarStore(object):
#仅仅是定义了这个方法,并没有实现具体功能,这个需要在子类中实现
def createCar(self, typeName):
pass
def xiChe(self):
pass
# 省略洗车的过程....>> self.car.x()
def shangBaoXian(self):
pass
# 省略上保险的过程....>> self.car.xx()
def shangChePai(self):
pass
# 省略上车牌的过程....>> self.car.xxx()
def order(self, typeName):
# 1. 让工厂根据类型,生产一辆汽车
self.car = self.createCar(typeName)
# 2. 洗车
self.xiChe()
# 3. 上保险
self.shangBaoXian()
# 4. 上车牌
self.shangChePai()
# 5. 将车返回给用户
return self.car
# 定义一个北京现代4S店类class XiandaiCarStore(CarStore):
def __init__(self):
#设置4s店的指定生产汽车的工厂
self.carFactory = XianDaiFactory()
# 重写createCar方法,从而完成现代车具体的生成过程,
# 而其他的像洗车、上牌的功能,都是直接继承自父类,从而让程序更简单了
def createCar(self, typeName):
return self.carFactory.createCar(typeName)
# 定义一个生产汽车的工厂,让其根据具体得订单生产车class XianDaiFactory(object):
def createCar(self, typeName):
if typeName == "伊兰特":
car = YilanteCar()
elif typeName == "索纳塔":
car = SuonataCar()
return car
# 定义伊兰特车类class YilanteCar(object):
# 定义车的方法
def move(self):
print("---车在移动---")
def stop(self):
print("---停车---")
# 定义索纳塔车类class SuonataCar(object):
# 定义车的方法
def move(self):
print("---车在移动---")
def stop(self):
print("---停车---")
suonata = XiandaiCarStore()
my_car = suonata.order("索纳塔")
my_car.move()
my_car.stop()