2012-02-14 86 views
0

我正在写一个大的webforms应用程序,我使用MVP模式。该应用程序是一个贷款申请,用户需要回答很多问题。我的问题是,在一页上可能会有大约15-20个问题,他们的可视性取决于以前的答案。MVP设计困境

因此,每次用户回答问题“A”时,View可能会在提交者中调用SetVisabilityB()来处理是否显示或隐藏问题“B”。到目前为止这么好,但是问题答案“B”显示/隐藏了问题“C”,并且当用户在问题“A”上改变他/她的意见时,视图必须同时调用SetVisabilityB()和SetVisabilityC()。 。我觉得这有点麻烦,因为我现在有一些地方需要针对一个问题调用5-6种不同的SetVisability方法。

我应该使用“全局”SetVisability方法来更新所有问题的可见性对于每个答案还是有更好的方法来解决这个问题?

回答

1

我的方法的主要问题是您的视图包含何时显示和隐藏问题的业务逻辑。这个观点应该尽可能愚蠢,它应该是你的主持人做出这些决定。

我会看到信号告诉主持人问题已被回答并通过问题编号。主讲人可以根据需要隐藏或显示问题。这可以采用case语句的形式,或者如果事情变得非常复杂,那么你可以切换到使用状态机。