0

我的程序有一个窗口,可以在其中绘制和处理模型(类)。运行时的许多其他类(对象)将使用这两个。出于这个原因,我需要保留对它们的引用。到目前为止,我只是在我的主 GUI 类中保留了两个指针作为成员变量,但现在我想使用更好的策略。单例模式似乎很理想,但许多人说最好不要使用。替代方案似乎是直接注入(我认为这对我的情况并不理想)或其他模式,如工厂模式。但是工厂模式创建东西并且不保留对创建的东西的引用,还是我错了?是否有其他模式可以帮助我拥有某种全局容器来保存对许多其他对象将使用的对象的引用?

4

2 回答 2

1

我不确定您是否需要更改引用的保存方式。主 GUI 类跟踪作为应用程序的一部分创建的内容,这是完全合理的。

使用 Singleton 基本上意味着“创建一些其他对象而不是主 GUI 类来跟踪创建了哪些对象。现在不是询问 GUI 类,而是对象将询问 Singleton。如果他们已经询问 GUI 类,它满足与 Singleton 相同的目的。

因此,如果您的代码如下所示:

object.myMethod {
<...>
  draw(mainGuiClass.textWindow, bla, bla, bla);

...并且 textWindow 是静态的,您可能已经将 mainGuiClass 用作单例。

如果发生的情况是像 this object.someMethod(mainGui.textWindow, bla, bla, bla) 那样调用方法,或者您的对象是使用对 mainGuiClass 或 mainGuiClass.textWindow 的引用创建的,那么您正在使用某种注入。

这有帮助吗?

于 2012-08-16T08:06:26.160 回答
0

如果您希望 Window 和 Model 将是单个实例 - 使用 Singletone。我是否理解正确,您希望它们在单个实例中?

于 2012-08-16T08:23:29.823 回答