如果我有可以在显示时重复使用的视图,这将是一种更好的方法:在处理显示视图的类中创建它们的实例变量,或者将视图定义为单例,然后引用它们他们自己的班级?
所以这......
class Game
{
GameView view = new GameView();
void Method()
{
view.Show();
}
}
......还是这个?
void Method()
{
GameView.Instance.Show();
}
这只是一个偏好问题吗?游戏将是一个单身人士。
答案 0 :(得分:2)
除非这些视图的创建成本很高,否则请将它们作为新实例。它简化了测试,并允许像IOC这样的架构模式。
另外,你确定你永远不需要2才能存在吗?
答案 1 :(得分:1)
单身人士的事情......除非你有充分的理由这样做,否则不要使用它们。没有更好的主意并不是一个好理由!
你知道,当GoF引入单身人士时,他们被认为是解决方案来解决需要某种全局状态的问题。但是有太多人用错误的方式 - "你知道,现在有一种模式可以用于全球状态"。这是完全错误的。
全局状态使您的应用程序更难以测试和维护;它增加了代码的不同部分之间的耦合,这些部分通常应该彼此有任何关系。
所以,长话短说:去实例变量。但也许,不是直接创建GameView对象,而是查看dependency injection,以便您的Game对象从某个框架接收其视图,而不是像您的示例中那样紧密耦合。