Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python应用程序设计模式-实例必须可用于大多数其他实例_Python_Design Patterns_Singleton - Fatal编程技术网

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

Python应用程序设计模式-实例必须可用于大多数其他实例,python,design-patterns,singleton,Python,Design Patterns,Singleton,我正在编写相当大和复杂的应用程序,所以我希望坚持设计模式以保持代码的高质量。我有一个实例需要对几乎所有其他实例可用 假设我有BusMonitor实例(用于记录消息的类)和其他使用此实例记录操作的实例,例如Reactor,它解析来自网络协议的传入帧,并根据帧记录不同的消息 我有一个主要实例,创建BusMonitor、Reactor和其他几个实例。 现在我希望Reactor能够使用BusMonitor实例,如何根据设计模式做到这一点 将其设置为反应堆的变量对我来说似乎很难看: self.\u反应堆设

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

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

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

将其设置为反应堆的变量对我来说似乎很难看:
self.\u反应堆设置\u总线监视器(self.\u总线监视器)

对于需要访问BusMonitor的每个实例,我都会这样做。 导入此实例似乎更糟糕

虽然我可以将BusMonitor设置为Singleton,但我的意思不是作为类而是作为模块,然后导入该模块,但我希望将内容保留在类中以保持一致性

什么方法是最好的

我想在课堂上保持事物的一致性

为什么??为什么一致性很重要(而不是成为一个小精灵)

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

我想在课堂上保持事物的一致性

为什么??为什么一致性很重要(而不是成为一个小精灵)


在有意义的地方使用类。在没有模块的地方使用模块。Python中的类实际上是用于封装数据和保留状态的。如果你没有做这些事情,就不要使用类。否则,您就是在与该语言作斗争。

因为您已经有了一个层次结构,您可以使用一个链来获得它。。这不是问题,但想法是相似的


每个小部件都有一个
getbusmonitor
调用,除了根小部件之外,对于所有小部件都是
return self.parent().getbusmonitor()
。您还可以缓存结果。

因为您已经有了层次结构,所以可以使用链来获取它。。这不是问题,但想法是相似的


每个小部件都有一个
getbusmonitor
调用,除了根小部件之外,对于所有小部件都是
return self.parent().getbusmonitor()
。您还可以缓存结果。

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

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

将它设置为变量有什么错?为什么你认为这很难看?嗯,我不确定这是否是一个好的方法,它会在未来腐烂吗?或者看看这个例子。我有gui界面的主要实例,它不需要访问busmonitor,这个gui创建了选项卡的实例,选项卡创建了一些更深层次的小部件,然后我们到达了实例需要访问busmonitor的点,现在我必须将busmonitor作为变量从上到下传递给每个实例才能传递它。嗯。。。小部件可以要求父对象给他对象,父对象会要求其父对象等等。这将是一场灾难,通常你不记得它有多少实例深度。它看起来是这样的:
self.\u busmonitor=self.parent().parent().parent().parent().busmonitor()
将其设置为变量有什么问题?为什么你认为这很难看?嗯,我不确定这是否是一个好的方法,它会在未来腐烂吗?或者看看这个例子。我有gui界面的主要实例,它不需要访问busmonitor,这个gui创建了选项卡的实例,选项卡创建了一些更深层次的小部件,然后我们到达了实例需要访问busmonitor的点,现在我必须将busmonitor作为变量从上到下传递给每个实例才能传递它。嗯。。。小部件可以要求父对象给他对象,父对象会要求其父对象等等。这将是一场灾难,通常你不记得它有多少实例深度。它看起来是这样的:
self.\u busmonitor=self.parent().parent().parent().parent().parent().busmonitor()
,但我正在封装数据。过滤状态、记录的消息和很少的其他内容。当然,我们可以说这不值得,我应该使用模块。然而,这个问题在其他语言中是如何解决的?但我正在封装数据。过滤状态、记录的消息和很少的其他内容。当然,我们可以说这不值得,我应该使用模块。但是,如何用其他语言解决这个问题?