1

次のようなデータベース テーブルがあるとします。

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()文字列からオブジェクトを作成することでしたが、なんらかのデメリットがあると思いますが…

ですから、私の考えについて、もう少しアイデアやコメントをいただけないでしょうか。

4

2 に答える 2

0

より洗練された方法で実現するには、休止状態を使用する必要があります

于 2013-08-24T22:19:43.023 に答える