class FruitClass:
# 种类工厂def get_name(self, name_index): if name_index == 0: name_object = OrangeClass() elif name_index == 1: name_object = Hami_MelonClass() elif name_index == 2: name_object = GrapeClass() else: name_object = None return name_object
class OrangeClass:
# 橘子类def __init__(self): self.name = "橘子"def print_name(self): print("您购买的水果为:%s" % self.name)
class Hami_MelonClass:
# 哈密瓜类def __init__(self): self.name = "哈密瓜"def print_name(self): print("您购买的水果为:%s" % self.name)
class GrapeClass:
# 葡萄类def __init__(self): self.name = "葡萄"def print_name(self): print("您购买的水果为:%s" % self.name)
class FruitWeight:
# 称重工厂def __init__(self, weight): self.weight = float(weight)def print_weight(self): print("该水果的分量为:%.2f千克" % self.weight)
class FruitPrice:
# 价格工厂def get_price(self, name_index, variety): if name_index == 0: price_object = OrangePrice(variety) elif name_index == 1: price_object = Hami_MelonPrice() elif name_index == 2: price_object = GrapePrice() else: price_object = None return price_object
class OrangePrice:
# 橘子价格类def __init__(self, variety): self.variety = variety if self.variety == 1: self.price = 8.5 else: self.price = 11.0def print_price(self): print("该水果的单价为:%.2f元/千克" % self.price)
class Hami_MelonPrice:
# 哈密瓜价格类def __init__(self): self.price = 24.3def print_price(self): print("该水果的价格为:%.2f元/千克" % self.price)
class GrapePrice:
# 葡萄价格类def __init__(self): self.price = 16.2def print_price(self): print("该水果的价格为:%.2f元/千克" % self.price) return self.price
class FruitPack:
# 包装工厂def __init__(self, pack): if pack == 1: self.pack = "散称" else: self.pack = "盒装"def print_pack(self): print("该水果的打包形式为:%s" % self.pack)
class FruitFactory:
def __init__(self, name_index, weight, variety, pack): # 工作的调配,种类、[期货](https://www.gendan5.com/futures.html)分量、价格、包装形式 self.name_object = FruitClass().get_name(name_index) self.weight_object = FruitWeight(weight) self.price_object = FruitPrice().get_price(name_index, variety) self.pack_object = FruitPack(pack)def print_purchase(self): # 计算购买的金额 money = self.price_object.price * self.weight_object.weight print("须要领取的金额共计为:%.2f元" % money)def show_info(self): # 展现最终的购买信息 self.name_object.print_name() self.weight_object.print_weight() self.price_object.print_price() self.pack_object.print_pack() self.print_purchase() print("-*-" * 20)
class Consumer:
# 消费者类def __init__(self): print("-*-" * 20) # 输出原始的“购买需要”信息 self.name = input("请输出你要购买的水果名称:0.橘子 1.哈密瓜 2.葡萄\n") self.weight = input("请输出你要购买水果的分量(kg):\n") self.variety = input("如果您购买橘子,咱们有2种橘子:0.不买橘子 1.甘橘 2.砂糖橘\n") self.pack = input("请您抉择该水果的包装形式:1.散称 2.盒装\n") print("-*-" * 20)def request(self): # 返回相干的购买信息 return self.name, self.weight, self.variety, self.pack
if name == '__main__':
# 创立顾客buyer = Consumer()# 拿到顾客的购买信息buy_info = buyer.request()# 应用水果工厂,传播指令至旗下的子工厂并执行购买操作buy_res = FruitFactory(int(buy_info[0]), int(buy_info[1]), int(buy_info[2]), int(buy_info[3]))# 购买信息的展现buy_res.show_info()