Python应用程序设计模式实例必须可用于大多数其他实例

2024-10-03 02:41:00 发布

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

我正在编写相当大和复杂的应用程序,所以我希望坚持设计模式以保持代码的高质量。我有一个实例需要对几乎所有其他实例可用的问题。你知道吗

假设我有BusMonitor实例(用于记录消息的类)和其他使用该实例记录操作的实例,例如Reactor,它解析来自网络协议的传入帧,并根据帧记录不同的消息。你知道吗

我有一个主实例,它创建BusMonitor、Reactor和其他几个实例。 现在我希望Reactor能够使用BusMonitor实例,如何根据设计模式做到这一点?你知道吗

将其设置为Reactor的变量对我来说似乎很难看: self._reactor.set_busmonitor(self._busmonitor)

我会为每个需要访问BusMonitor的实例这样做。 导入此实例似乎更糟。你知道吗

虽然我可以使BusMonitor成为Singleton,但我的意思不是作为类而是作为模块,然后导入这个模块,但我希望在类中保持一致性。你知道吗

什么方法最好?你知道吗


Tags: 模块实例代码self应用程序消息记录设计模式
3条回答

因为你已经有了一个层次结构,你可以用一个链来获得它。。它不是Chain-of-responsibility pattern,但想法是相似的。你知道吗

每个小部件都有一个getbusmonitor调用,除了根小部件外,其他小部件都是return self.parent().getbusmonitor()。你也可以缓存结果。。你知道吗

I want to keep things in classes to retain consistency

为什么?为什么一致性很重要(而不是成为一个头脑简单的妖精)?你知道吗

在有意义的地方使用类。在不需要的地方使用模块。Python中的类实际上是用来封装数据和保留状态的。如果你不做这些事情,不要使用类。否则你就是在和语言抗争。你知道吗

我找到了思考的好方法。我用类BusMonitor创建了一个模块,在同一个模块中,在类定义之后,我创建了这个类的实例。现在我可以从项目中的任何地方导入它,并使用类和封装保持一致性。你知道吗

相关问题 更多 >