私はJavaを初めて使用するので、これはおそらく非常に簡単です。ほとんどの変数/メソッドをインターフェイスと共有する一連のサブクラスがありますが、各子クラスには、そのタイプに固有のいくつかの追加メソッドがあるため、このようにコードを設計しました。
ただし、データベースからデータを取得する場合(データはすべてのサブクラスで同じ形式で保存されます)、基本クラスまたはサブクラスに簡単にキャストできるもののインスタンスを作成できるようにしたいと思います。子クラスのインスタンスを提供するために、ある種のファクトリが必要またはあります。
これは私が今持っているコードです。データのタイプをチェックしてから、サブクラスの新しいインスタンスを作成するだけですが、繰り返しのように感じます。
何か良いですか?
if( rs.getString("action_type").equals("block-break") || rs.getString("action_type").equals("block-place") ){
actions.add( new BlockAction(
rs.getString("action_time"),
rs.getString("action_type"),
rs.getString("world"),
rs.getString("player"),
rs.getInt("x"),
rs.getInt("y"),
rs.getInt("z"),
rs.getString("data")
) );
}
if( rs.getString("action_type").equals("entity-kill") ){
actions.add( new EntityKillAction(
rs.getString("action_time"),
rs.getString("action_type"),
rs.getString("world"),
rs.getString("player"),
rs.getInt("x"),
rs.getInt("y"),
rs.getInt("z"),
rs.getString("data")
) );
}