2013-12-08 113 views
1

我正在研究通用圖靈機的簡單應用。我有一個數據來創建機器,我的問題不是關於UTM我只想在這個應用程序中說明它。我需要從字符串數據創建一個對象,例如這種方法創建我UTM的一個過渡功能:類設計 - 從字符串數據創建一個對象?

public static Transition createFromData(String data) { 

    Transition trans = new Transition(); 
    String[] dataSplitted = data.split("1"); 
    trans.setInputState(new State(dataSplitted[0])); 
    trans.setInputSymbol(dataSplitted[1]); 
    trans.setNewState(new State(dataSplitted[2])); 
    trans.setNewSymbol(dataSplitted[3]); 
    trans.setMovement(Movement.getByCode(dataSplitted[4])); 

    return trans; 

} 

這是好主意(從類設計的角度來看),以在過渡類這樣的方法,或者我應該將它們分開到另一個/工具類?這個問題的做法是什麼?

+1

這是一個完全有效的設計模式,稱爲「靜態工廠模式」。我建議使用某種「解析器」接口並根據數據類型注入一個實現 - 將類與它在數據中的表示耦合是不好的。說完這個問題不適合這個論壇 - 它是a)基於意見和b)要求代碼審查。 –

回答

1

使用工具/ utils類總是讓我想起結構化編程;)但是如果你在Transition類上只有一個構造函數,將會有幫助,它將接收原始數據並用它創建一個新的轉換對象。由於每當你找到一些原始數據時你將創建一個新的轉換最適合在構造函數中(或者在工廠方法中,但這是另一個討論)

+1

*(或者可能是工廠方法,但這是另一種討論)*:這不是另一次討論。 OP特別詢問在Transition類中使用這種方法是否是一個好主意,使其成爲工廠方法。 –

+0

我更喜歡OP的靜態工廠模式,以將您的所有內容粘貼到構造函數中。正如@JBNizet指出,這裏是討論。 –

0

如何在另一個類中使用此方法例如:RawData,它具有用於從數據創建不同對象的靜態工廠方法。

在你的情況下,你可以有一個方法將返回Transition對象,然後你可以有多個方法,並且每個方法都返回一個不同的對象,這取決於數據在該對象中的組織/表示方式。