【发布时间】:2011-10-21 11:07:21
【问题描述】:
我目前正在进行一个项目,我们必须在 3D 环境中表示一组矢量。我们有几种不同的可视化实现。
我想到了可以将所有可视化类型捆绑在一个枚举中。我已经定义了一个接口 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);
}
标签用于 Gui 中的 JComboBox。所以我现在可以遍历枚举并获取不同类型的标签。另外要设置一个实现,我可以像这样使用枚举:
VectorVisualizationType.CYLINDER.getVisualization()
但这是个好方法吗?或者这种方法有什么问题吗?当然,现在当你创建了一个新的实现后,你必须将它添加到枚举中。
感谢您的意见!
【问题讨论】:
标签: java oop design-patterns enums strategy-pattern