python 设计模式之建造者模式
程序员文章站
2022-04-29 23:53:03
...
python 建造者模式
例:以快餐点餐系统来阐述这个模式,从订单的角度来构造这个系统
1.汉堡以2种为例
class Burger(object):
name = ""
price = 0.0
def getPrice(self):
return self.price
def setPrice(self, price):
self.price = price
def getName(self):
return self.name
class cheeseBurger(Burger):
def __init__(self):
self.name = "cheese burger"
self.price = 10.0
class spicyChickenBurger(Burger):
def __init__(self):
self.name = "spicy chicken burger"
self.price = 15.0
2.小食
class Snack(object):
name = ""
price = 0.0
type = 'SNACK'
def getPrice(self):
return self.price
def setPrice(self, price):
self.pirce = price
def getName(self):
return self.name
class chips(Snack):
def __init__(self):
self.name = 'chips'
self.price = 6.0
class chickenWings(Snack):
def __init__(self):
self.name = "chicken wings"
self.price = 12.0
3.饮料
class Beverage(object):
name = ""
price = 0.0
type = "BEVERAGE"
def getPrice(self):
return self.price
def setPrice(self, price):
self.price = price
def getName(self):
return self.name
class coke(Beverage):
def __init__(self):
self.name = 'coke'
self.price = 4.0
class milk(Beverage):
def __init__(self):
self.name = 'milk'
self.price = 5.0
class order():
burger = ""
snack = ""
beverage = ""
def __init__(self, orderBuilder):
self.burger = orderBuilder.bBurger
self.snack = orderBuilder.bSnack
self.beverage = orderBuilder.bBeverage
def show(self):
print("Burger:%s" % self.burger.getName())
print("Snack:%s" % self.snack.getName())
print("Beverage:%s" % self.beverage.getName())
class orderBuilder():
bBurger = ""
bSnack = ""
bBeverage = ""
def addBurger(self, xBurger):
self.bBurger = xBurger
def addSnack(self, xSnack):
self.bSnack = xSnack
def addBeverage(self, xBeverage):
self.bBeverage = xBeverage
def build(self):
return order(self)
if __name__ == '__main__':
order_builder = orderBuilder()
order_builder.addBurger(spicyChickenBurger())
order_builder.addSnack(chips())
order_builder.addBeverage(milk())
order_1 = order_builder.build()
order_1.show()
#打印结果:
Burger:spicy chicken burger
Snack:chips
Beverage:milk
上一篇: SSM项目中的配置文件