直接喷射,工厂模式,单例模式

时间:2012-08-16 07:06:15

标签: design-patterns singleton factory factory-pattern

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

2 个答案:

答案 0 :(得分:1)

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

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

所以,如果您的代码如下所示:

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

...而textWindow是静态的,你可能已经将mainGuiClass用作Singleton了。

如果发生的是调用方法,就像这个object.someMethod(mainGui.textWindow,bla,bla,bla)或你的对象是通过引用mainGuiClass或mainGuiClass.textWindow创建的,那么你正在使用某种类型的注入

这有帮助吗?

答案 1 :(得分:0)

如果您希望Window和Model是单个实例 - 请使用Singleton。我理解正确,你想要它们在单一实例中吗?