Architecture 游戏视图:实例变量与单例?

Architecture 游戏视图:实例变量与单例?,architecture,Architecture,如果我有视图,当它们显示时我将重复使用,那么哪种方法更好:在处理显示视图的类中创建它们的实例变量,或者将视图定义为单例,然后为它们自己的类引用它们 所以这个 class Game { GameView view = new GameView(); void Method() { view.Show(); } } …还是这个 void Method() { GameView.Instance.Show(); } 这只是偏好的问题吗?游

如果我有视图,当它们显示时我将重复使用,那么哪种方法更好:在处理显示视图的类中创建它们的实例变量,或者将视图定义为单例,然后为它们自己的类引用它们

所以这个

class Game
{
    GameView view = new GameView();

    void Method() 
    {
        view.Show();
    }
}
…还是这个

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

这只是偏好的问题吗?游戏将是一个单例游戏。

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


另外,您确定永远不需要2就可以存在吗?

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


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

关于单身的事情。。。除非你有很好的理由,否则不要使用它们。没有更好的主意不是一个好理由

你看,当GoF引入单例时,它们是用来解决需要某种全局状态的问题的。但太多人的理解是错误的——“你看,既然有了一个模式,那么选择全球国家就好了。”。这完全是错误的

全局状态使您的应用程序更难测试和维护;它在代码的不同部分之间添加了耦合,这些部分通常应该相互关联


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

单例的事情。。。除非你有很好的理由,否则不要使用它们。没有更好的主意不是一个好理由

你看,当GoF引入单例时,它们是用来解决需要某种全局状态的问题的。但太多人的理解是错误的——“你看,既然有了一个模式,那么选择全球国家就好了。”。这完全是错误的

全局状态使您的应用程序更难测试和维护;它在代码的不同部分之间添加了耦合,这些部分通常应该相互关联

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