Python设计模式之抽象工厂模式
作者:WuLex 时间:2021-02-06 09:18:59
python面向对象编程入门,我们需要不断学习进步
"""抽象工厂模式的实现"""
import random
class PetShop:
"""宠物商店"""
def __init__(self, animal_factory=None):
"""宠物工厂是我们的抽象工厂。我们可以随意设置。"""
self.pet_factory = animal_factory
def show_pet(self):
"""使用抽象工厂创建并显示一个宠物"""
pet = self.pet_factory.get_pet()
print("我们有一个可爱的 {}".format(pet))
print("它说 {}".format(pet.speak()))
print("我们还有 {}".format(self.pet_factory.get_food()))
# 工厂生产的事物
class Dog:
def speak(self):
return "汪"
def __str__(self):
return "Dog"
class Cat:
def speak(self):
return "喵"
def __str__(self):
return "Cat"
# Factory classes
class DogFactory:
def get_pet(self):
return Dog()
def get_food(self):
return "狗食"
class CatFactory:
def get_pet(self):
return Cat()
def get_food(self):
return "猫粮"
# 随机创建合适的工厂
def get_factory():
"""让我们动起来!"""
return random.choice([DogFactory, CatFactory])()
# 多个工厂显示宠物
if __name__ == "__main__":
for i in range(4):
shop = PetShop(get_factory())
shop.show_pet()
print("=" * 20)
结果如图:
标签:Python,抽象工厂模式
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
发现IE6下URL path不会自动补全
2009-03-31 12:52:00
jQuery中$.ajax的实现解析
2008-07-20 13:11:00
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2023-08-21 20:03:14
![](https://img.aspxhome.com/file/2023/3/553631_0s.png)
oracle中添加删除主键的方法
2023-06-30 00:28:52
PHP中array_slice函数用法实例详解
2023-06-20 20:18:04
JavaScript面向对象的简单介绍
2008-06-27 12:37:00
ASP与Excel结合生成数据表和Chart图的代码
2011-03-08 10:50:00
Dreamweaver层使用八定律
2008-05-16 11:41:00
ASP使用wsImage组件给图片加水印
2008-12-29 19:14:00
asp随机获取access数据库中的一条记录
2007-08-15 13:11:00
Node.js和PHP根据ip获取地理位置的方法
2023-11-14 21:23:13
ASP链接Mysql数据库 非DSN连接的方法
2009-03-09 18:24:00
GoFrame框架gcache的缓存控制淘汰策略实践示例
2023-07-22 06:41:19
![](https://img.aspxhome.com/file/2023/8/97718_0s.png)
页面软键盘汉字输入
2010-09-01 20:41:00
关于VSCode 配置使用 PyLint 语法检查器的问题
2023-06-18 17:10:33
![](https://img.aspxhome.com/file/2023/0/61430_0s.png)
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2023-06-25 12:44:15
浅谈LogMiner的使用方法
2009-02-28 11:12:00
php解析字符串里所有URL地址的方法
2023-08-19 08:31:38
asp.net DropDownList实现二级联动效果
2023-07-23 07:48:41
![](https://img.aspxhome.com/file/2023/6/79976_0s.jpg)
Dreamweaver技巧十二招
2009-07-05 18:53:00