我正在编写相当大和复杂的应用程序,所以我希望坚持设计模式以保持代码的高质量。我有一个实例需要对几乎所有其他实例可用的问题。你知道吗
假设我有BusMonitor实例(用于记录消息的类)和其他使用该实例记录操作的实例,例如Reactor,它解析来自网络协议的传入帧,并根据帧记录不同的消息。你知道吗
我有一个主实例,它创建BusMonitor、Reactor和其他几个实例。 现在我希望Reactor能够使用BusMonitor实例,如何根据设计模式做到这一点?你知道吗
将其设置为Reactor的变量对我来说似乎很难看:
self._reactor.set_busmonitor(self._busmonitor)
我会为每个需要访问BusMonitor的实例这样做。 导入此实例似乎更糟。你知道吗
虽然我可以使BusMonitor成为Singleton,但我的意思不是作为类而是作为模块,然后导入这个模块,但我希望在类中保持一致性。你知道吗
什么方法最好?你知道吗
因为你已经有了一个层次结构,你可以用一个链来获得它。。它不是Chain-of-responsibility pattern,但想法是相似的。你知道吗
每个小部件都有一个
getbusmonitor
调用,除了根小部件外,其他小部件都是return self.parent().getbusmonitor()
。你也可以缓存结果。。你知道吗为什么?为什么一致性很重要(而不是成为一个头脑简单的妖精)?你知道吗
在有意义的地方使用类。在不需要的地方使用模块。Python中的类实际上是用来封装数据和保留状态的。如果你不做这些事情,不要使用类。否则你就是在和语言抗争。你知道吗
我找到了思考的好方法。我用类BusMonitor创建了一个模块,在同一个模块中,在类定义之后,我创建了这个类的实例。现在我可以从项目中的任何地方导入它,并使用类和封装保持一致性。你知道吗
相关问题 更多 >
编程相关推荐