设计:显示不同变量的不同按钮(即用户,状态)

时间:2013-08-14 07:34:46

标签: java spring design-patterns spring-mvc

问题陈述:

每个报告都有多个任务。 报告任务显示在表格中 每个任务都有不同的选项(A,B,D,E,X) 选项在表格列

中显示为超链接

对于不同的角色和任务状态,显示的选项将有所不同。

即(状态s1和角色r1)将显示选项A和B

我是否应该知道如何设计它以允许视图每次显示不同的选项?

我的首发设计:

使用hashmap存储此选项vs keys并使用选项

填充TaskModel

我是否知道是否有更好的解决方案以及我可以使用哪种设计模式?

1 个答案:

答案 0 :(得分:0)

我会为ReportTask实例创建一个包装类,它将处理上下文敏感选项处理。

包装器看起来像:

class StatusRoleContextReportTaskWrapper {
    private ReportTask;

    public StatusRoleContextReportTaskWrapper(ReportTask task) { ... }

    public Option[] getOptions() { /* return options based on role and status */ }

    public static StatusRoleContextReportTaskWrapper[] getWrapped(ReportTask[] tasks) {
        /* wrap tasks ... */
        return wrappedTasks;
    }
}

这是一个示例控制器方法。

public String reportTaskList(ModelMap model) {
    ReportTask[] tasks = reportTaskService.getSome();
    model.add("reportTasks", StatusRoleContextReportTaskWrapper.getWrapped(tasks));

    return "taskListView";
}