我有一个名为Screen
的班级。每次我想在我的应用程序中设置一个新的屏幕时,我都会调用以下方法:
public void setScreen(Screen screen) {
if(this.screen != null) {
this.screen.pause();
this.screen.onDispose();
}
this.getGraphics().drawColor(Color.BLACK); // Clear virtual framebuffer
this.screen = screen;
this.screen.load();
this.screen.resume();
WSLog.e(Game.GAME_ENGINE_TAG, this, "New Screen has been created");
}
现在我的问题是:是否允许用load
方法替换构造函数的函数?
我这样做,因为在设置新屏幕时,必须首先处理当前的屏幕,然后才能加载新屏幕,但是如果我在构造函数中完成所有加载,那么新屏幕将初始化首先,然后当前的一个将被放弃(这是不理想的)。
答案 0 :(得分:0)
它完全有效,你根本不替换构造函数。 constructor
的主要作用是初始化将对象置于有效状态以供使用的变量。但是,这并不意味着对象必须立即履行其所有责任。假设您设计了一个Engine
类。调用它的构造函数并不一定意味着立即启动引擎。使用start
方法在创建对象实例后启动引擎没有任何问题。
答案 1 :(得分:0)
绝对是允许的。
在C#中使用Window Forms时,有一个名为InitializeComponents()的方法,用于设置表单的所有对象和事件。您的方案是有效的,因为正如您所说,有时您不想这样做。
构造函数用于初始化变量和/或至少分配空间。不要害怕将更多的代码放入其他方法中,特别是如果您可以设想不希望使用一段代码的时间。它使您的程序更加灵活。
祝你好运:)