python抽象工厂模式_Python设计模式之抽象工厂模式
Python设计模式之抽象工厂模式
这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下
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抽象工厂模式_Python设计模式之抽象工厂模式相关推荐
- python中的装饰器、装饰器模式_python 设计模式之装饰器模式 Decorator Pattern
#写在前面 已经有一个礼拜多没写博客了,因为沉醉在了<妙味>这部小说里,里面讲的是一个厨师苏秒的故事.现实中大部分人不会有她的天分.我喜欢她的性格:总是想着去解决问题,好像从来没有怨天尤人 ...
- python 装饰器 继承_Python设计模式之装饰器模式
装饰器模式 无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法. 如果合理,可以直接将功能添加到对象所属的类(例如,添加一个新的方法) 使用组合 使用继承 注意,本文中的Decorat ...
- 抽象工厂模式_设计模式系列—抽象工厂模式
前言 23种设计模式速记 单例(singleton)模式 工厂方法(factory method)模式 23种设计模式快速记忆的请看上面第一篇,前面说完了工厂方法模式,我们发现工厂方法模式存在一个严重 ...
- 抽象工厂模式_设计模式(3) 抽象工厂模式
抽象工厂模式 优化抽象工厂 异步工厂 在学习抽象工厂模式前,先来回顾一下前面的简单工厂和工厂方法模式.简单工厂的职责非常简单:构造某个实体类型,然后把实例作为抽象类型返回: 工厂方法模式则进一步抽象出 ...
- python 享元模式_python 设计模式之享元(Flyweight)模式
#写在前面 这个设计模式理解起来很容易.百度百科上说的有点绕口. #享元模式的定义 运用共享技术来有効地支持大量细粒度对象的复用. 它通过共享已经存在的对橡大幅度减少需要创建的对象数量.避免大量相似类 ...
- python设计模式案例分析_Python设计模式之职责链模式原理与用法实例分析
本文实例讲述了Python设计模式之职责链模式原理与用法.分享给大家供大家参考,具体如下: 职责链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免发送者和接 ...
- python中command是什么意思_python 设计模式之命令(Command)模式
#写在前面 也了解了不少设计模式了,他们都有一个通病,那就是喜欢把简单的东西复杂化.比如在不同的类中加个第三者.哈哈哈,简单变复杂是有目的的,那就是降低耦合度,增强可维护性,提高代码复用性,使代码变得 ...
- python 命令模式_python设计模式(十六):命令模式-阿里云开发者社区
"行为请求者"与"行为实现者"通常呈现一种"紧耦合".但在某些场合,比如要对行为进行"记录.撤销/重做.事务"等处理,这 ...
- python修饰器_python设计模式之修饰器模式
python设计模式之修饰器模式 无论何时我们想对一个对象添加额外的功能,都有下面这些不同的可选方法. [ ] 如果合理,可以直接将功能添加到对象所属的类(例如,添加一个新的方法) [ ] 使用组合 ...
最新文章
- 5G产业发展最新进展深度解析(144页PPT)
- C#高级编程----错误和异常的总结
- C#和.Ne学习第五天
- 在python函数中参数分类的详细教程
- git学习------gt;写给 Git 初学者的7个建议
- 【Flashback】Flashback Database闪回数据库功能实践
- [数据结构-严蔚敏版]P71串的抽象数据类型的定义
- 如何用jar命令对java工程进行打包
- springcloud之gateway服务网关
- if else 条件语句
- 如何在工具类中注入Service
- 全球光伏多晶硅价格上涨 中美贸易纠纷不断
- opencv-图像翻转问题
- 笔记本电脑应用商店服务器错误,打开win10商店出错 出现win10商店请稍后重试问题怎么办 - 驱动管家...
- 牵手华为云,云时通SRM助力企业采购数字化升级!
- Upload_上传_并传递额外参数
- R语言工具变量与两阶段最小二乘法
- 思维导图(一):高效的思维工具
- 网页电话/手机号码识别
- H - 找女朋友(快排)
热门文章
- 2013年上半年全国高等学校(安徽考区)计算机水平考试试卷,2013年上半年全国高等学校(安徽考区)计算机水平考试试卷...
- zhs16gbk对应mysql_数据库的编码浅谈(ZHS16GBK与US7ASCII)
- json java的set函数,JsonConfig的jsonConfig.setExcludes的用法
- osx php7 imagick,[PHP] MacOS 自带php环境安装imagick扩展踩坑记录 | 码农部落
- 机器学习之Fisher线性分类器实现样本分类
- [蓝桥杯]算法提高 vertex cover(dfs)
- Orac and Game of Life CodeForces - 1350E(思维+BFS)
- 黑白树(牛客网+树形dp)
- CAN总线数据帧/标准帧/扩展帧/远程帧/错误帧的组成格式对比
- linux-shell命令之cat【输出档案内容】