python设计模式之抽象工厂模式怎么实现
python设计模式之抽象工厂模式怎么实现
本篇内容主要讲解“python设计模式之抽象工厂模式怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python设计模式之抽象工厂模式怎么实现”吧!
实现的代码如下:
classFruitClass:#品种工厂defget_name(self,name_index):ifname_index==0:name_object=OrangeClass()elifname_index==1:name_object=Hami_MelonClass()elifname_index==2:name_object=GrapeClass()else:name_object=Nonereturnname_objectclassOrangeClass:#橘子类def__init__(self):self.name="橘子"defprint_name(self):print("您购买的水果为:%s"%self.name)classHami_MelonClass:#哈密瓜类def__init__(self):self.name="哈密瓜"defprint_name(self):print("您购买的水果为:%s"%self.name)classGrapeClass:#葡萄类def__init__(self):self.name="葡萄"defprint_name(self):print("您购买的水果为:%s"%self.name)classFruitWeight:#称重工厂def__init__(self,weight):self.weight=float(weight)defprint_weight(self):print("该水果的重量为:%.2f千克"%self.weight)classFruitPrice:#价格工厂defget_price(self,name_index,variety):ifname_index==0:price_object=OrangePrice(variety)elifname_index==1:price_object=Hami_MelonPrice()elifname_index==2:price_object=GrapePrice()else:price_object=Nonereturnprice_objectclassOrangePrice:#橘子价格类def__init__(self,variety):self.variety=varietyifself.variety==1:self.price=8.5else:self.price=11.0defprint_price(self):print("该水果的单价为:%.2f元/千克"%self.price)classHami_MelonPrice:#哈密瓜价格类def__init__(self):self.price=24.3defprint_price(self):print("该水果的价格为:%.2f元/千克"%self.price)classGrapePrice:#葡萄价格类def__init__(self):self.price=16.2defprint_price(self):print("该水果的价格为:%.2f元/千克"%self.price)returnself.priceclassFruitPack:#包装工厂def__init__(self,pack):ifpack==1:self.pack="散称"else:self.pack="盒装"defprint_pack(self):print("该水果的打包方式为:%s"%self.pack)classFruitFactory:def__init__(self,name_index,weight,variety,pack):#任务的分配,品种、重量、价格、包装方式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)defprint_purchase(self):#计算购买的金额money=self.price_object.price*self.weight_object.weightprint("需要支付的金额共计为:%.2f元"%money)defshow_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)classConsumer:#消费者类def__init__(self):print("-*-"*20)#输入原始的“购买需求”信息self.name=input("请输入你要购买的水果名称:0.橘子1.哈密瓜2.葡萄")self.weight=input("请输入你要购买水果的重量(kg):")self.variety=input("如果您购买橘子,我们有2种橘子:0.不买橘子1.甘橘2.砂糖橘")self.pack=input("请您选择该水果的包装方式:1.散称2.盒装")print("-*-"*20)defrequest(self):#返回相关的购买信息returnself.name,self.weight,self.variety,self.packif__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()
到此,相信大家对“python设计模式之抽象工厂模式怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
推荐阅读
-
python(中无效的十进制怎么解决 python怎么转换进制)
python怎么转换进制?Python执行二进制转换:1.十进制到二进制(bin)首先,让让我们看看如何将十进制转换成二进制。我...
-
python怎么清除完全相同的行(python splte如何分隔有多个相同符号的str)
pythonsplte如何分隔有多个相同符号的str?str你的string内容str_(相同的符号)执行完了以后再在相同符号的...
-
python(编程控制电脑关机 如何控制电脑关机)
如何控制电脑关机?可以在电脑的运行窗口中输入输入公式,给电脑可以设置自动关机。1.按开快捷键winr然后打开运行窗口。2.在运行窗...
-
python中的特殊标识符(python 中 标识符中可以有逗号吗)
python中标识符中可以有逗号吗?在python语言中合法的标识符是字母、数字以及_,所以我合法的标识符中肯定不能有逗号if...
-
python(excel 提取数据写入新表 python导入excel数据找不到工作簿)
python导入excel数据找不到工作簿?我可以导入数据后找不到工作,不是因为他的工作没有被转移。什么软件可提取并合并Exce...
-
python中字典定义的四种方法(python global关键字的用法详解)
pythonglobal关键字的用法详解?global标志实际上是目的是提示python讲解器,说被其修饰的变量是全局变量。这样...
-
python(array用法 python如何对两个数组做差处理)
python如何对两个数组做差处理?Python中的列表中的元素肯定不能真接相加,减。t最佳的位置的是将列表装换成Python中的...
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...