python设计模式-工厂模式

开闭原则:在扩展新类时,不去修改原有的类代码。

 

工厂模式分为三种:简单工厂、工厂方法和抽象工厂。

思想:将具体产品的创建过程抽象化,外部通过接口获取具体产品,不需要关心产品的具体过程。解耦产品的创建过程和使用过程的复杂度,通过统一的产品工厂来创建具体产品。

 

一、简单工厂模式

组成:多个产品类,一个工厂类。

由仅有的一个工厂控制各个产品的创建过程,外部client只需调用工厂类即可。

适用场景:产品实例较少,eg不同数据库的连接。

缺点:所有产品的创建过程都放在一个统一的工厂类中。

 

二、工厂方法模式

组成:每个产品都有一个产品类和一个工厂类(每一个产品工厂都继承自一个统一的抽象工厂),工厂类负责产品的具体创建。外部client需要特定产品时候,需要特定的工程类来创建。适用场景:每个产品由单独的产品工厂实现,可扩展性高。eg网络日志、数据库日志等。

摘自:https://refactoring.guru/design-patterns/factory-method

 

三、抽象工厂模式

组成:存在多个产品和多个产品工厂,每个产品工厂可以创建多个产品。

适用场景:一个应用包括多个相似的产品,eg:word中的不同按钮等。

摘自:https://refactoring.guru/design-patterns/abstract-factory

 

未完待续~

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
答案: 在Python中,常用的工厂设计模式是简单工厂模式。简单工厂模式是一种创建型设计模式,它通过一个工厂类来创建对象,根据传入的参数返回相应的对象实例。在上述的代码示例中,我们可以看到一个简单工厂模式的实现。首先定义了两个具体产品类Apple和Banana,它们都实现了eat方法。然后创建了一个FruitFactory工厂类,通过create_fruit方法来创建不同种类的水果对象。在主函数中,我们可以通过FruitFactory类的create_fruit方法来创建Apple和Banana对象,并调用对象的eat方法来实现相关功能。所以,通过使用工厂模式,我们可以通过工厂类来集中管理对象的创建,而不需要直接new一个对象,从而使代码更加灵活和可扩展。123 #### 引用[.reference_title] - *1* [python设计模式工厂模式](https://blog.csdn.net/m0_62410482/article/details/129989726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [python设计模式工厂模式](https://blog.csdn.net/u011564779/article/details/107895357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值