headfirsh设计模式——抽象工厂模式例子

"""
抽象工厂模式
"""
class PizzaIngredientFactory(object):
	def __init__(self):
		pass

	def createDough(self):
		pass

	def createSauce(self):
		pass

	def createCheese(self):
		pass

	def createVeggies(self):
		pass
	
	def createPepperoni(self):
		pass

	def createClam(self):
		pass

class NYPizzaIngredientFactory(PizzaIngredientFactory):
	def __init__(self):
		pass

	def createDough(self):
		print("制作Pizza生面团")

	def createSauce(self):
		print("制作番茄酱")		

	def createCheese(self):
		print("制作芝士")		

	def createVeggies(self):
		print("准备蒜头,洋葱,蘑菇,红辣椒")
	
	def createPepperoni(self):
		print("制作香肠")

	def createClam(self):
		print("制作新鲜蛤蜊")		

class Pizza(object):
	def __init__(self):
		self.name = ""
		self.sauce = None
		self.veggies = []
		self.cheese = None
		self.popperoni = None
		self.clam = None

	def prepare(self):
		pass

	def bake(self):
		print("烘烤披萨")

	def cut(self):
		print("把披萨切开")

	def box(self):
		print("把披萨放盒里")

	def setName(self, sName):
		self.name = sName

	def getName(self):
		return self.name

	def toString(self):
		pass

class CheesePizza(Pizza):
	def __init__(self, IngredientFactory):
		self.Factory = IngredientFactory
		self.prepare()

	def prepare(self):
		dough = self.Factory.createDough()
		sauce = self.Factory.createSauce()
		cheese = self.Factory.createCheese()

class ClamPizza(Pizza):
	def __init__(self, IngredientFactory):
		self.Factory = IngredientFactory
		self.prepare()

	def prepare(self):
		dough = self.Factory.createDough()
		sauce = self.Factory.createSauce()
		cheese = self.Factory.createCheese()
		clam = self.Factory.createClam() 

class PizzaStore(object):
	def __init__(self):
		pass

	def orderPizza(self, type):
		pizza = createPizza(type)
		pizza.prepare()
		pizza.bake()
		pizza.cut()
		pizza.box()
	
	def createPizza(self, type):
		return Pizza()

class NYPizzaStore(PizzaStore):
	def __init__(self):
		pass

	def createPizza(self, type):
		pizza = None
		ingredientFactory = NYPizzaIngredientFactory()
		if type == "cheese":
			pizza = CheesePizza(ingredientFactory)
			pizza.setName("芝士Pizza")
		elif type == "clam":
			pizza = ClamPizza(ingredientFactory)
			pizza.setName("蛤蜊Pizza")

		return pizza

pStore = NYPizzaStore()
pizza1 = pStore.createPizza("cheese")
print('Pizza是' + pizza1.getName())
print('------------------------------------')
pizza2 = pStore.createPizza("clam")
print('Pizza2是' + pizza2.getName())

"""
制作Pizza生面团
制作番茄酱
制作芝士
Pizza是芝士Pizza
------------------------------------
制作Pizza生面团
制作番茄酱
制作芝士
制作新鲜蛤蜊
Pizza2是蛤蜊Pizza
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值