5

2 つのウィジェットを持つアプリケーションを設計しています。

-任意のオブジェクトを含むリスト
-現在選択されているオブジェクトの特定のプロパティを表示するテーブル

目標は、リストからオブジェクトを選択し、プロパティを見て、必要に応じて変更できるようにすることです。リストには、さまざまなタイプのオブジェクトを保持できます。

リストにVehicleオブジェクトとPersonオブジェクトが含まれているとします

public class Person
{
  public String     name;
  public Integer    age;
}

public class Vehicle
{
  public String    make;
  public String    model;
}

オブジェクトをクリックするPersonと、テーブルに名前と年齢が表示され、それらに新しい値を割り当てることができます。同様に、Vehicleオブジェクトをクリックすると、表にメーカーとモデルが表示され、それらを変更できます。

私は次のようなメソッドを書くことを検討しました

public String[] getFields()
{
   return new String[] {"name", "age"};
}

見たいインスタンス変数を表す文字列のリストを返し、いくつかのリフレクションメソッドを使用してそれらを取得/設定します。getFieldsリストにスローされる可能性のある任意のオブジェクトをテーブルを使用して処理できるように、すべてのクラスでこのメソッドを定義できます。

しかし、リフレクションに頼らないようにこれを設計する方法はありますか? 現在のアプローチは悪い設計のようです。

一方、TableModel可能なクラスごとに 1 つずつ、複数のオブジェクトを作成することもできます。テーブルは、表示する行とオブジェクトのインスタンス変数へのアクセス方法を認識します。しかし、新しいクラスが追加されるたびに、新しいテーブル モデルを定義する必要がありますが、これも弱い設計のように思えます。

4

1 に答える 1