说明
1、属于创建模式,为创建对象提供了最佳方式。
2、该模式使用多个简单的对象逐渐构建复杂的对象,builder类逐渐构建最终对象,builder类独立于其他对象。
由于需求的变化,复杂对象的各个部分往往面临着剧烈的变化,但结合起来的算法相对稳定,因为每个部分的子对象都是由某个算法组成的。
实例
classItem: #提供水果基本信息的Item类抽象类 defset_name(self): pass defpacking(self): pass defset_price(self): pass defset_weight(self): pass defpromotion_price(self): pass classPack: #Pack管理水果的包装方法 defpack(self): pass classbox_pack(Pack): #box-pack采用盒装方式 defpack(self): return"盒装" classbag_pack(Pack): #bag-pack采用袋装 defpack(self): return"袋装" classGrape(Item): #葡萄类 defpacking(self): wrap=box_pack() returnwrap defset_price(self): grape_price=18.0 returngrape_price defset_name(self): grape_name="葡萄" returngrape_name defset_weight(self): grape_weight=2.5 returngrape_weight defpromotion_price(self): return28.99 classHami_Melon(Item): #哈密瓜类 defpacking(self): wrap=bag_pack() returnwrap defset_price(self): hami_melon_price=22.0 returnhami_melon_price defset_name(self): hami_melon_name="哈密瓜" returnhami_melon_name defset_weight(self): hami_melon_weight=3.2 returnhami_melon_weight defpromotion_price(self): return39.99 classOrange(Item): #橘子大类 defpacking(self): wrap=bag_pack() returnwrap defset_price(self): pass classCitrus(Orange): #柑橘类 defset_price(self): citrus_price=12.5 returncitrus_price defset_name(self): citrus_name="柑橘" returncitrus_name defset_weight(self): citrus_weight=2.6 returncitrus_weight defpromotion_price(self): return18.888 classTangerine(Orange): #冰橘类 defset_price(self): tangerine_price=13.0 returntangerine_price defset_name(self): tangerine_name="冰橘" returntangerine_name defset_weight(self): citrus_weight=3.3 returncitrus_weight defpromotion_price(self): return26.66 classMenu: def__init__(self): self.items=[] defAddItem(self,item): #添加item,即添加参与促销活动的水果 self.items.append(item) defShowItems(self): #ShowItem,展示参与促销活动的水果清单 print("-*-"*5+"限时促销清单"+"-*-"*10) foriteminself.items: print("◎Item:"+item.set_name()+"包装:"+item.packing().pack()+"原价:"+str( item.set_price())+"元/千克"+"重量:"+str(item.set_weight())+"千克"+"限时促销价格:"+ str(item.promotion_price())+"元!!!!") print("-*-"*5+"限时促销清单"+"-*-"*10) classMenuBuilder: @staticmethod defPrepareMenu(): #构造清单,过程如下: menu=Menu() menu.AddItem(Grape()) menu.AddItem(Citrus()) menu.AddItem(Tangerine()) menu.AddItem(Hami_Melon()) returnmenu if__name__='__main__': #建造新的建造者 menu_builder=MenuBuilder() #建设促销活动的水果清单 menu_object=menu_builder.PrepareMenu() #展示参与促销活动的水果信息 menu_object.ShowItems()
以上是python建造者模式的介绍,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。