游戏视图:实例变量与单身人士?

时间:2016-10-16 16:16:48

标签: architecture

如果我有可以在显示时重复使用的视图,这将是一种更好的方法:在处理显示视图的类中创建它们的实例变量,或者将视图定义为单例,然后引用它们他们自己的班级?

所以这......

class Game
{
    GameView view = new GameView();

    void Method() 
    {
        view.Show();
    }
}

......还是这个?

void Method()
{
    GameView.Instance.Show();
}

这只是一个偏好问题吗?游戏将是一个单身人士。

2 个答案:

答案 0 :(得分:2)

除非这些视图的创建成本很高,否则请将它们作为新实例。它简化了测试,并允许像IOC这样的架构模式。

另外,你确定你永远不需要2才能存在吗?

答案 1 :(得分:1)

单身人士的事情......除非你有充分的理由这样做,否则不要使用它们。没有更好的主意并不是一个好理由!

你知道,当GoF引入单身人士时,他们被认为是解决方案来解决需要某种全局状态的问题。但是有太多人用错误的方式 - "你知道,现在有一种模式可以用于全球状态"。这是完全错误的。

全局状态使您的应用程序更难以测试和维护;它增加了代码的不同部分之间的耦合,这些部分通常应该彼此有任何关系。

所以,长话短说:去实例变量。但也许,不是直接创建GameView对象,而是查看dependency injection,以便您的Game对象从某个框架接收其视图,而不是像您的示例中那样紧密耦合。