【问题标题】:Java data structure suggestionsJava 数据结构建议
【发布时间】:2011-12-13 04:13:57
【问题描述】:

正在开发的应用程序的一部分是向用户展示一个表单并要求他们拒绝/接受它。有一些类型的用户需要批准相同的表单,以便它被认为是被接受的。我需要的建议是:我可以使用/最好使用什么结构来存储用户类型及其响应? 到目前为止,我有一个对象是 Approvers。这包含了具有 setter 和 getter(以及其他与操作相关的方法)的三种类型的用户。我还创建了另一个对象,即 UserDecisions,其中我有两个属性要设置,它们是:用户类型和响应。但我想不出如何将它们联系在一起,或者是否有更好的方法? 谢谢,

附:我考虑过的是二维数组和哈希图。

【问题讨论】:

  • 不清楚你在问什么。对象模型?数据库模型?只要有一个 User 类、一个 UserType 枚举和一个 User => Response 的集合——一个映射就可以了;查找用户以确保他们不会投票两次会更快。
  • 对象模型。这里与数据库无关。我只是询问如何将某些回复与用户关联

标签: java data-structures


【解决方案1】:

假设你有

User { name, type  }  
         // type is perhaps an enum with values such as administrator,
         // manager, seniorManager, executive 

Response { user, decision }
         // decision is an enum "pending", "approved", "rejected"

Role { name, minimumTypeOfUser }
         // first approval can be done by administrators or above
         // second approval by managers or above
         // third approval by executives only

Approval { Role, Response }


ThingToBeApproved { detalsOfWhatNeedsApproving, approvalList<Approval> }
          // when you set up the approval list you specify each
          // approval role and then select a user whose type matches
          // the role.

在我工作的系统中,我们将用户从角色中分离出来以完成一项任务 - 一个更资深的人有时会履行初级的角色。

【讨论】:

    【解决方案2】:

    “去规范化”系统将具有 Users、UserType 枚举(或类似的),以及 User => Responses 的集合。地图很好;它加快了确保用户不会投票两次的速度。

    如果您需要汇总 UserType 的答案,您可以保留一个单独的 UserType => Responses 随着回复的统计而更新。

    【讨论】:

      【解决方案3】:

      为用户创建一个基类。扩展它们以创建您自己的自定义用户类,例如 Approvers。在 UserDecisions 类中,为 formName 或 userName 创建一个字段,它将 UserDecisions 与用户链接起来。或者您可以创建一个单独的类用于链接目的。

      【讨论】:

        猜你喜欢
        • 2016-05-21
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-21
        • 2013-09-26
        • 2013-11-19
        • 1970-01-01
        相关资源
        最近更新 更多