В настоящее время я работаю над проектом, в котором мы должны представить набор векторов в трехмерной среде. У нас есть несколько различных реализаций визуализации.
Я пришел к мысли, что я мог бы объединить все типы визуализации в перечислении. Я определил интерфейс VectorVisualization и несколько реализаций, которые реализуют этот интерфейс.
Теперь я добавил в класс Interface следующее перечисление:
public interface VectorVisualization {
public enum VectorVisualizationType {
CYLINDER(new VectorVisualizationCylinder(), "Cylinder"),
CONES(new VectorVisualizationCones(), "Cones"),
FATCONES(new VectorVisualizationFatCones(), "Fat cones"),
ARROWS(new VectorVisualizationArrows(), "Arrows");
private final String label;
private final VectorVisualization vis;
VectorVisualizationType(VectorVisualization vis, String label) {
this.vis = vis;
this.label = label;
}
public VectorVisualization getVisualization() {
return this.vis;
}
public String getLabel() {
return this.label;
}
}
void prepareVBO(GL gl, ArrayList<VectorData> vectors, VectorField field);
void render(GL gl);
void clearOldVBOS(GL gl);
}
Метка для JComboBox в графическом интерфейсе. Так что теперь я могу просто перебрать перечисление и получить метку разных типов. Также, чтобы установить реализацию, я могу использовать перечисление так:
VectorVisualizationType.CYLINDER.getVisualization()
Но это хороший способ? Или есть какие-то проблемы с этим подходом? Конечно, теперь, когда вы создали новую реализацию, вы должны добавить это в перечисление.
Спасибо за ваше мнение!