我正在开发一个项目,其中包含大量表单,用户将填写这些表单以创建最终报告。这些问题中的大多数是多种选择。我正在努力应用应用程序中的类的适当架构。
为了交谈,我们可以说这是一起车祸报告。面向对象的方法将要求我们根据每个问题中包含的信息创建结构。所以我们有“车辆”,“意外”等课程。但是,如果“车辆在碰撞时移动的速度是什么”这样的问题呢?用户可以选择4个答案?
在课堂上存储此信息的正确方法是什么?我的第一个考虑因素是枚举:
enum CollisionSpeed {
LessThan10,
ElevenToThirty,
ThirtyOneToFifty,
MoreThanFifty
}
但是,由于数据结构基于演示文稿,因此感觉很脏。此外,如果他们改变范围,我们也必须更改枚举。
所以问题是,如何使用面向对象的方法处理这样的范围选择?
谢谢!
答案 0 :(得分:1)
如果非常通用且您有大量的问题,则可能会破坏非规范化是否是正确的方法。不是逐个建模每个单独的主题,而是可以提供一个抽象层,以便例如业务用户可以在没有IT参与的情况下添加更多问题。简单示例(伪编码):
class QuestionEntity {
String question;
enum type; // e.g. open question (freetext), closed question (check boxes), etc.
String[] values // if it's a closed question
}
如上所述,这相当简单。由于我确实知道你的确切要求,我无法判断你的情况是否合理。事实上,它是为您的特定业务用例开发DSL。
也许答案并不像你预期的那样具体,但是当我读到你的问题时我想起了......