如何引用还没有初始化的变量?
How to reference variables that haven't been initialized yet?
假设我有这个设置:
public class Game
{
public static World World;
public static Camera Camera;
public static Player Player;
public Game()
{
World = new World();
Camera = new Camera();
Player = new Player();
}
}
在相机构造函数中,我使用世界对象来定位相机,但是我还需要在世界构造函数中访问相机。我不能只使用 Main.Camera
因为它还没有被初始化。我该如何解决这个问题?有没有我可以用来避免这种循环依赖问题的编程模式?
只需更改初始化顺序
public class Game
{
public static World World;
public static Camera Camera;
public static Player Player;
public Game()
{
Camera = new Camera();
World = new World(Camera);
Player = new Player();
}
}
如果存在相互依赖(两者相互依赖),则说明您的设计存在问题(循环依赖反模式)。您可能需要重新考虑您的设计。尽量不要制作一个保存所有状态的“全局对象”。这也是一种设计反模式。您需要提供详细信息(在单独的问题中)以获得特定提示。
假设我有这个设置:
public class Game
{
public static World World;
public static Camera Camera;
public static Player Player;
public Game()
{
World = new World();
Camera = new Camera();
Player = new Player();
}
}
在相机构造函数中,我使用世界对象来定位相机,但是我还需要在世界构造函数中访问相机。我不能只使用 Main.Camera
因为它还没有被初始化。我该如何解决这个问题?有没有我可以用来避免这种循环依赖问题的编程模式?
只需更改初始化顺序
public class Game
{
public static World World;
public static Camera Camera;
public static Player Player;
public Game()
{
Camera = new Camera();
World = new World(Camera);
Player = new Player();
}
}
如果存在相互依赖(两者相互依赖),则说明您的设计存在问题(循环依赖反模式)。您可能需要重新考虑您的设计。尽量不要制作一个保存所有状态的“全局对象”。这也是一种设计反模式。您需要提供详细信息(在单独的问题中)以获得特定提示。