假设我有一个数据库表,如:
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()
字符串创建对象,但是我已经假设这会有一些缺点......
所以我想也许你们可以给我更多的想法或评论我的想法。