python设计模式(一):工厂方法与抽象工厂及应用场景

简介: 工厂方法与抽象工厂是否傻傻分不清,力求以最简单和最直接的方式来理解模式设计,毕竟模式的初衷是化繁为简,就该用最简单的方式来理解。示例code:工厂模式# -*- coding:utf-8 -*-class A:    def __init__(self):        self.

工厂方法与抽象工厂是否傻傻分不清,力求以最简单和最直接的方式来理解模式设计,毕竟模式的初衷是化繁为简,就该用最简单的方式来理解。


示例code:

工厂模式

# -*- coding:utf-8 -*-


class A:

    def __init__(self):
        self.word = "运行A"

    def run(self):
        print(self.word)


class B:

    def __init__(self):
        self.word = "运行B"

    def run(self):
        print(self.word)


def Interface(classname):
    """
    工厂模式接口函数
    :param classname:
    :return:
    """

    run = dict(A=A, B=B)
    return run[classname]()


if __name__ == '__main__':
    test1 = Interface('A')
    test1.run()
    test2 = Interface('B')
    test2.run()
    
    结果:
   运行A
   运行B
   


抽象工厂模式:

# -*- coding:utf-8 -*-


class A:

    def __init__(self):
        self.word = "运行A"

    def run(self):
        print(self.word)


class B:

    def __init__(self):
        self.word = "运行B"

    def run(self):
        print(self.word)


class Interface:
    """
    抽象工厂模式接口类
    :param classname:
    :return:
    "
""
    def __init__(self, classname=None):
        self.test = classname

    def run(self):
        self.test().run()


if __name__ == '__main__':
    test1 = Interface()
    test1.test = A
    test1.run()
    test1.test = B
    test1.run()

    结果:
   运行A
   运行B


抽象工厂:创建一系列相关或相互依赖抽象出来的的对象接口Interface,不需要具体指明实例化A类或B类

工厂方法:定义一个用于创建对象的接口函数Interface,让子类决定实例化哪一个类A或者B

抽象工厂、工厂方法异同比较:抽象工厂实例化的类在接口方法里已经通过字典方式例举出来了,也就是不是实例化A就是B,但是抽象工厂实例化的类未知,可以在抽象接口类里传入A或者B,也可以新建一个C类传入。

类本身就是对象的抽象,但是抽象工厂是对类的抽象,相同方法、相同属性的归并。

如上图,抽象工厂有两个方法生产车架和制造轮胎,但是他没有指定是生产那种牌子的,上图有两种牌子:飞鸽自行车、永久自行车,也就可以增加一个凤凰自行车等等。工厂模式里面就指定了飞鸽厂和永久厂,并且这两个厂只能生产各自对应的轮胎。

相关文章
|
10月前
|
机器学习/深度学习 JSON Java
Java调用Python的5种实用方案:从简单到进阶的全场景解析
在机器学习与大数据融合背景下,Java与Python协同开发成为企业常见需求。本文通过真实案例解析5种主流调用方案,涵盖脚本调用到微服务架构,助力开发者根据业务场景选择最优方案,提升开发效率与系统性能。
2140 0
|
10月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
898 0
|
11月前
|
数据采集 监控 Java
Python 函数式编程的执行效率:实际应用中的权衡
Python 函数式编程的执行效率:实际应用中的权衡
422 102
|
12月前
|
设计模式 人工智能 算法
Python设计模式:从代码复用到系统架构的实践指南
本文探讨了电商系统中因支付方式扩展导致代码臃肿的问题,引出设计模式作为解决方案。通过工厂模式、策略模式、单例模式等经典设计,实现代码解耦与系统扩展性提升。结合Python语言特性,展示了模块化、装饰器、适配器等模式的实战应用,并延伸至AI时代的设计创新,帮助开发者构建高内聚、低耦合、易维护的软件系统。
514 0
|
10月前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
698 6
|
10月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
622 0
|
11月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
551 0
|
11月前
|
存储 程序员 数据处理
Python列表基础操作全解析:从创建到灵活应用
本文深入浅出地讲解了Python列表的各类操作,从创建、增删改查到遍历与性能优化,内容详实且贴近实战,适合初学者快速掌握这一核心数据结构。
751 0
|
11月前
|
中间件 机器人 API
Python多态实战:从基础到高阶的“魔法”应用指南
Python多态机制通过“鸭子类型”实现灵活接口,使不同对象统一调用同一方法,自动执行各自行为。它简化代码逻辑、提升扩展性,适用于数据处理、策略切换、接口适配等场景。掌握多态思维,能有效减少冗余判断,使程序更优雅、易维护。
495 0
|
11月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍了基于Python的剪贴板监控技术,结合clipboard-monitor库实现高效、安全的数据追踪。内容涵盖技术选型、核心功能开发、性能优化及实战应用,适用于安全审计、自动化办公等场景,助力提升数据管理效率与安全性。
342 0

推荐镜像

更多