说明
1、属于创建型模式,提供了创建对象的最佳方式。
2、该模式使用多个简单的对象逐步构建复杂的对象,Builder类逐步构建最终对象,该Builder类独立于其他对象。
由各部分的子对象用一定的算法构成,因为需求的变化,该复杂对象的各部分经常面临剧烈的变化,但结合起来的算法相对稳定。
实例
class Item: # Item类提供水果的基础信息的抽象类 def set_name(self): pass def packing(self): pass def set_price(self): pass def set_weight(self): pass def promotion_price(self): pass class Pack: # Pack管理水果的包装方式 def pack(self): pass class box_pack(Pack): # box-pack采用盒装方式 def pack(self): return "盒装" class bag_pack(Pack): # bag-pack采用袋装方式 def pack(self): return "袋装" class Grape(Item): # 葡萄类 def packing(self): wrap = box_pack() return wrap def set_price(self): grape_price = 18.0 return grape_price def set_name(self): grape_name = "葡萄" return grape_name def set_weight(self): grape_weight = 2.5 return grape_weight def promotion_price(self): return 28.99 class Hami_Melon(Item): # 哈密瓜类 def packing(self): wrap = bag_pack() return wrap def set_price(self): hami_melon_price = 22.0 return hami_melon_price def set_name(self): hami_melon_name = "哈密瓜" return hami_melon_name def set_weight(self): hami_melon_weight = 3.2 return hami_melon_weight def promotion_price(self): return 39.99 class Orange(Item): # 橘子大类 def packing(self): wrap = bag_pack() return wrap def set_price(self): pass class Citrus(Orange): # 柑橘类 def set_price(self): citrus_price = 12.5 return citrus_price def set_name(self): citrus_name = "柑橘" return citrus_name def set_weight(self): citrus_weight = 2.6 return citrus_weight def promotion_price(self): return 18.88 class Tangerine(Orange): # 冰橘类 def set_price(self): tangerine_price = 13.0 return tangerine_price def set_name(self): tangerine_name = "冰橘" return tangerine_name def set_weight(self): citrus_weight = 3.3 return citrus_weight def promotion_price(self): return 26.66 class Menu: def __init__(self): self.items = [] def AddItem(self, item): # 添加item,即添加参与促销活动的水果 self.items.append(item) def ShowItems(self): # ShowItem,展示参与促销活动的水果清单 print("-*-" * 5 + "限时促销清单" + "-*-" * 10) for item in self.items: print("◎Item:" + item.set_name() + " 包装:" + item.packing().pack() + " 原价:" + str( item.set_price()) + "元/千克" + " 重量:" + str(item.set_weight()) + "千克" + "\n 限时促销价:" + str(item.promotion_price()) + "元!!!") print("-*-" * 5 + "限时促销清单" + "-*-" * 10) class MenuBuilder: @staticmethod def PrepareMenu(): # 构造清单,过程如下: menu = Menu() menu.AddItem(Grape()) menu.AddItem(Citrus()) menu.AddItem(Tangerine()) menu.AddItem(Hami_Melon()) return menu if __name__ == '__main__': # 新建一个建造者 menu_builder = MenuBuilder() # 建造促销活动的水果清单 menu_object = menu_builder.PrepareMenu() # 展示参与促销活动的水果信息 menu_object.ShowItems()
以上就是python建造者模式的介绍,希望对大家有所帮助。更多Python学习指路:
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。