千家信息网

python3依赖倒置原则实例代码分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了python3依赖倒置原则实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python3依赖倒置原则实例代码分析文章都会有所收获,下面我们一起
千家信息网最后更新 2026年10月31日python3依赖倒置原则实例代码分析

这篇文章主要介绍了python3依赖倒置原则实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python3依赖倒置原则实例代码分析文章都会有所收获,下面我们一起来看看吧。

场景

针对园区停车信息,需要对各个公司提供的停车数据进行整合并录入自家公司的大数据平台

数据的录入无外乎就是对数据的增删改查

下面上一个常规的写法(未符合依赖倒置),整合来自 长安和丰田 的停车数据

class Changan(object):    def __init__(self):        self.type = 'changan'    def ca_add(self):        print('%s 新增' % self.type)    def ca_del(self):        print('%s 删除' % self.type)    def ca_modify(self):        print('%s 修改' % self.type)            def ca_get(self):        print('%s 查询' % self.type)class Toyota(object):    def __init__(self):        self.type = 'fengtian'    def tyt_add(self):        print('%s 新增' % self.type)    def tyt_del(self):        print('%s 删除' % self.type)    def tyt_modify(self):        print('%s 修改' % self.type)    def tyt_get(self):        print('%s 查询' % self.type)class Data(object):    def __init__(self, car):        self.car = car    def data_add(self):        if self.car.type == 'changan':            self.car.ca_add()        else:            self.car.tyt_add()    def data_del(self):        if self.car.type == 'changan':            self.car.ca_del()        else:            self.car.tyt_del()    def data_mofify(self):        if self.car.type == 'changan':            self.car.ca_modify()        else:            self.car.tyt_modify()    def data_get(self):        if self.car.type == 'changan':            self.car.ca_get()        else:            self.car.tyt_get()if __name__ == '__main__':    ca = Changan()    tyt = Toyota()    autosystem = Data(ca)    autosystem.data_add()    autosystem.data_del()    autosystem.data_modify()    autosystem.data_get()    autosystem.car = tyt    print('*' * 50)    autosystem.data_add()    autosystem.data_del()    autosystem.data_modify()    autosystem.data_get()

运行的结果如下

changan 新增
changan 删除
changan 修改
changan 查询
**************************************************
fengtian 新增
fengtian 删除
fengtian 修改
fengtian 查询

可以看到最后的Data类是一个简单工厂,通过面向流程的方式对数据进行增删改查,上层的Data类永远都要依赖下层的Changan类和Toyota类,假设未来Changan类和Toyota类因为需求变更导致实现方式变了,那么Data类也会跟着改,或者未来又来一家新的厂商铃木Suzuki,那么在Data又要多写很多if else。这样的改动对于程序员来说是致命的,每一次变动需要改动的地方都很多,问题油然而生。

如何解决

遵循依赖倒置原则,根据

"程序要依赖于抽象接口,不要依赖于具体实现。"

通过changan、toyota这些类的公共性,把处理数据的方法通过接口抽象出来

import abcclass DataProcessing(metaclass=abc.ABCMeta):    """    抽象类    抽象新增改查    """    @abc.abstractmethod    def data_add(self, *args, **kwargs):        pass    @abc.abstractmethod    def data_del(self, *args, **kwargs):        pass    @abc.abstractmethod    def data_modify(self, *args, **kwargs):        pass    @abc.abstractmethod    def data_get(self, *args, **kwargs):        passclass Changan(DataProcessing):    def __init__(self):        self.type = 'changan'    def data_add(self):        print('%s 新增' % self.type)    def data_del(self):        print('%s 删除' % self.type)    def data_modify(self):        print('%s 修改' % self.type)            def data_get(self):        print('%s 查询' % self.type)class Toyota(DataProcessing):    def __init__(self):        self.type = 'fengtian'    def data_add(self):        print('%s 新增' % self.type)    def data_del(self):        print('%s 删除' % self.type)    def data_modify(self):        print('%s 修改' % self.type)    def data_get(self):        print('%s 查询' % self.type)class Data(object):    def __init__(self, car):        self.car = car    def data_add(self):        self.car.data_add()    def data_del(self):        self.car.data_del()    def data_modify(self):        self.car.data_modify()    def data_get(self):        self.car.data_get()if __name__ == '__main__':    ca = Changan()    tyt = Toyota()    autosystem = Data(ca)    autosystem.data_add()    autosystem.data_del()    autosystem.data_modify()    autosystem.data_get()    autosystem.car = tyt    print('*' * 50)    autosystem.data_add()    autosystem.data_del()    autosystem.data_modify()    autosystem.data_get()

运行后结果依然为

changan 新增
changan 删除
changan 修改
changan 查询
**************************************************
fengtian 新增
fengtian 删除
fengtian 修改
fengtian 查询

以上可看出,增删改查已经抽象成DataProcessing里面的方法,以后不管Changan类和Toyota类怎么变动,或者需要新增一个Suzuki类什么的,上层的Data类都不用改变,if name == 'main' 后客户端的调用也不需要怎么改动,代码层次也更清晰,便于后续的扩展。

关于"python3依赖倒置原则实例代码分析"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"python3依赖倒置原则实例代码分析"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

查询 数据 代码 原则 实例 分析 知识 上层 公司 内容 接口 方式 方法 程序 篇文章 结果 变动 整合 运行 油然而生 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 互联网科技公司起名 互联网科技的 没上市的科技互联网公司 互联网公司 科技公司 科技服务与互联网 有马互联网科技 世界互联网科技公司市值排名 宜昌元轩互联网科技有限公司 深圳市罗太互联网科技有限公司 伊宁互联网科技做什么的 互联网科技圈年度人物 合肥互联网科技公司公章图片 怎样加入科技互联网 互联网第三次科技革命特征 互联网营销推广黑科技 广州有谷有贝互联网科技有限公司 互联网科技平台产品运营 悟空问答互联网科技 安徽零酒互联网科技有限公司 科技互联网 广州为想互联网科技有限公司 中国互联网科技股 港股互联网科技股 创业天下互联网科技有限公司 用友工业互联网科技发展 互联网金融科技名词解释 科技互联网行业投资研究 互联网科技职业技能培训学校 互联网科技创新创业项目
0