首页 > 代码库 > 创造者模式
创造者模式
模式说明
建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式构建复杂对象就像造汽车一样,是一个一个组件一个一个步骤创建出来的,它允许用户通过制定的对象类型和内容来创建他们,但是用户并不需要知道这个复杂对象是如何构建的,它只需要明白通过这样做我可以得到一个完整的复杂对象实例。
和工厂方法很像,创造者是一个builder内每个方法分别创建产品零部件,而工厂方法是每个factory生产一个产品。如果把builder的零部件当做一个完整产品呢?是不是就像 builder又再一次封装了factory~
模式结构图
程序示例
说明:
一个套餐类,两个派生套餐(每个套餐有不同食品);一个创造者类,两个派生创造者分别创建两种套餐;一个指挥者用来设定要创造哪个套餐。
程序:
1 class Meal(object): 2 _food=‘‘ 3 _drink=‘‘ 4 def setfood(self,food): 5 self._food=food 6 def setdrink(self,drink): 7 self._drink=drink 8 def getfood(self): 9 return self._food10 def getdrink(self):11 return self._drink12 13 class MealBuilder(object):14 _meal = Meal()15 def buildFood(self):16 pass17 18 def buildDrink(self):19 pass20 21 def getMeal(self):22 return self.meal23 24 25 class MealABuilder(MealBuilder):26 def buildFood(self):27 self._meal.setfood(‘meal A food‘)28 def buildDrink(self):29 self._meal.setdrink(‘meal A drink‘)30 31 class MealBBuilder(MealBuilder):32 def buildFood(self):33 self._meal.setfood(‘meal B food‘)34 def buildDrink(self):35 self._meal.setdrink(‘meal B drink‘)36 37 class director(object):38 _mealuilder = MealBuilder()39 def setBuilder(self,mealBuilder):40 self._mealuilder = mealBuilder41 def PrepareMeal(self):42 self._mealuilder.buildDrink()43 self._mealuilder.buildFood()44 return self._mealuilder._meal45 46 47 if __name__==‘__main__‘:48 mealbuilder = MealABuilder()49 waitor = director()50 waitor.setBuilder(mealbuilder)51 meal = waitor.PrepareMeal()52 print meal.getdrink()+"\t"+meal.getfood()53 54 mealbuilder = MealBBuilder()55 waitor = director()56 waitor.setBuilder(mealbuilder)57 meal = waitor.PrepareMeal()58 print meal.getdrink()+"\t"+meal.getfood()
运行效果:
参考来源:
http://www.cnblogs.com/chenssy/p/3679190.html
http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html
http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html
创造者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。