2013-04-02 42 views
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方法來代替構造函數的功能?

我這樣做,因爲當設置一個新的屏幕,當前的一個必須首先處理,然後可以加載新的,但是如果我在構造函數中進行所有加載,那麼新的屏幕會首先初始化,然後將當前的一個初始化(這不是理想的)。

回答

0

這是完全有效的,你根本沒有替換構造函數。 constructor的主要作用是初始化變量,使對象處於有效狀態以供使用。但是,這並不意味着對象必須馬上履行其全部責任。假設您設計了一個Engine類。調用它的構造函數並不意味着馬上啓動引擎。在創建對象實例之後,允許啓動引擎的方法沒有什麼不妥。

0

這是絕對允許的。
當您在C#中使用窗體窗體時,有一種名爲InitializeComponents()的方法,用於設置窗體的所有對象和事件。你的情況是有效的,因爲就像你說的那樣,有時候你不想這樣做。

構造函數用於初始化變量和/或至少分配空間。不要害怕將更多的代碼放入其他方法中,特別是如果您可以設想一些時候您不想使用一段代碼。它使你的程序更加靈活。

祝你好運:)

相關問題