次のようなデータベース テーブルがあるとします。
Table Building
ID int (primary key)
title varchar
これを取得するために、次のような Java クラスがあります。
class Building{
private Integer ID;
private String title;
...
}
(それが役立つ場合は、想像力にいくつかのJPAアノテーションを追加してください)。
しかし今、実際の建物に応じて、いくつかのロジックを実行したいと考えています。
私の最初の考えは、次のような大きなスイッチ/ケースを作成することでした:
switch(building.getId()){
case 1:
BuildingA buildingLogic = new BuildingA(building);
break;
case 2:
BuildingB buildingLogic = new BuildingB(building);
break;
...
}
buildingLogic.doBuildingSpecificStuff();
しかし、それは無限のスイッチ/ケースで終わり、「読む」ことはあまり明確ではありません.
私の次の考え (Mark Elliot の回答で既にカバーされています) は、実際のクラス名を追加フィールド (BuildingClass) としてデータベースに書き込み、いくつかの (私には現在不明な) Java マジックを使用して、building.getBuildingclass()
文字列からオブジェクトを作成することでしたが、なんらかのデメリットがあると思いますが…
ですから、私の考えについて、もう少しアイデアやコメントをいただけないでしょうか。