0

我有一堂课叫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

我这样做是因为在设置新屏幕时,必须先处理当前屏幕,然后才能加载新屏幕,但是如果我在构造函数中完成所有加载,那么新屏幕将首先初始化,然后当前的将被处置(这并不理想)。

4

2 回答 2

0

这是完全有效的,你根本没有替换构造函数。a 的主要作用constructor是初始化变量,使对象处于有效状态以供使用。然而,这并不意味着对象必须立即履行其所有职责。假设你设计了一个Engine类。调用它的构造函数并不意味着立即启动引擎。start在创建对象实例后拥有允许启动引擎的方法并没有错。

于 2013-04-02T00:49:35.067 回答
0

这绝对是允许的。
在 C# 中使用窗口窗体时,有一个名为 InitializeComponents() 的方法,用于设置窗体的所有对象和事件。您的方案是有效的,因为就像您说的那样,有时您不想这样做。

构造函数至少用于初始化变量和/或分配空间。不要害怕将更多代码放入其他方法中,尤其是当您可以设想不想使用一段代码的时候。它使您的程序更加灵活。

祝你好运 :)

于 2013-04-02T00:56:42.403 回答