建造者模式(Build Pattern)
In [1]:
class Burger():
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
class Snack():
name = ""
price = 0.0
type = "SNACK"
def getPrice(self):
return self.price
def setPrice(self, price):
self.price = 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
class Beverage():
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
In [2]:
class Order(object):
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())
In [6]:
class orderBuilder():
bBurger=""
bSnack=""
bBeverage=""
def addBurger(self,xBurger):
self.bBurger=xBurger
return self
def addSnack(self,xSnack):
self.bSnack=xSnack
return self
def addBeverage(self,xBeverage):
self.bBeverage=xBeverage
return self
def build(self):
return Order(self)
In [7]:
order_1=orderBuilder().addBurger(spicyChickenBurger()).addSnack(chips()).addBeverage(milk()).build()
order_1.show()