我正在研究Java中的機器人模擬(Swing應用程序)。我有一個抽象類「機器人」,從中獲得不同類型的機器人。你可以看到,每個Robot子類都有一組不同的參數組。Java在運行時加載用戶指定的類
我想要做的是控制初始UI中的模擬設置。選擇機器人的數量和類型,給它一個名字,填寫參數等。
這是一個這樣的恐龍程序員和新來的Java,我不知道是否有更高層次的東西/認爲這可以幫助我。因此,這裏是我的本錢:
(1)用戶界面
左側機器人類型的滾動列表。 「添加>>」和「< <刪除」中間的按鈕。 默認命名的右側機器人滾動列表。 下方的「設置參數」按鈕。 (所以如果你想要一個AngryRobot,你會選擇左側列表中的AngryRobot,點擊「Add >>」,「AngryRobot1」將出現在右側)。
當在右側選擇一個機器人時, 「設置參數...」按鈕,它將調用另一個模型對話框,您可以在其中填寫參數。不同的對話框要求每個 機器人類型。
(2)數據結構的實現
作爲一個最終產品,我認爲一個HashMap將是最方便的。鍵是機器人類型,伴隨的對象將是所有參數。初始化器可以檢索每個項目,並且實例化。這裏的數據結構是什麼樣子:
enum ROBOT_TYPE {STUPID, ANGRY, etc}
public class RobotInitializer {
public ROBOT_TYPE m_type;
public string m_name;
public int[] m_int_params;
public float[] m_float_params;
etc.
的初始化的構造函數創建一個基於類型選擇合適的長度參數數組:
public RobotInitializer(ROBOT_TYPE type, int[] int_array, float[] float_array, etc){
switch (type){
case STUPID:
m_int_params = new int[STUPID_INT_PARAM_LENGTH];
System.arraycopy(int_array,0,m_int_params,0,STUPID_INT_PARAM_LENGTH);
etc.
一旦所有的RobotInitializers被實例化,它們將被添加到HashMap中。
迭代通過HashMap,模擬初始化程序從Hashmap中獲取項目並實例化合適的Robots。
這是合理的嗎?如果不是,如何改進?
謝謝