如何在Python中应用ClosedOpen和反转控制原理?

2024-09-29 00:17:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在阅读了Bob叔叔的《干净的体系结构》一书之后,我现在正在构建一个新的应用程序,并在“封闭-开放”和“控制反转”原则的实现部分进行了很多努力

如何在Python中实现它们?

通常,这两个原则齐头并进,并在UML中描述为从模块/包A到B的Interface反向控制

我很困惑,因为:

    Python不具有^ {CD1}}s,如java和C++。是的,有ABC@abstractmethod,但从我的观点来看,如果你不开发一个框架的话,它不是一个python风格,是多余的
  • 在Python中,将一个类传递给另一个类的方法(我知道这是实现开闭原则的一种方法)有点危险,因为它没有一个编译器来捕获问题,如果两个松散耦合的对象中的一个发生了变化,那么问题就可能(也将)发生
  • 在忽略接口并将顶级类传递给低级类之后。。。我仍然需要导入顶部模块中的所有内容。这样,整个事情就被侵犯了

所以,正如你所看到的,我非常困惑,很难按照我的设计进行编程。我想到了。你能帮帮我吗


Tags: 模块方法框架应用程序体系结构javainterfaceuml
1条回答
网友
1楼 · 发布于 2024-09-29 00:17:16

只需传递一个对象,该对象实现了需要它实现的方法

诚然,没有“接口”来定义这些方法必须是什么,但在python中就是这样

您一直在传递参数,这些参数必须是列表、映射、元组或其他任何类型,并且这些参数都没有经过类型检查。您可以编写代码,对这些东西调用您想要的任何东西,而python在代码实际执行之前不会注意到任何类型的问题

当您需要这些参数来实现所使用的任何IoC接口时,情况完全相同。一定要在评论中详细说明要求

是的,这很危险。这就是为什么对于具有复杂接口的大型系统,我们更喜欢静态类型的语言

相关问题 更多 >