复杂的向导模式



我正试图为我的多向导软件设计一个框架,无法找到一个很好的解决方案。我所有的尝试都太复杂和丑陋。我使用。NET CF和WinForms。

我有多个视图:ViewA, ViewB, ViewC, ViewD等,每个视图都有按钮"后退","下一步"one_answers"取消"

这些视图被下面的向导使用,每个向导都有入口点和结束点,也可以取消。

WzrdA: -> ViewA <-> ViewB <-> ViewC ->
WzrdB: -> ViewB <-> ViewD -> 
WzrdC: -> ViewC <-> ViewD -> 

最后将向导组合到工作流中:

WfA: ViewMain (start WfA) -> WzrdA -> WzrdB -> WzrdC -> back to ViewMain
WfB: ViewMain (start WfB) -> WzrdA -> WzrdC -> back to ViewMain

所以,我有一个单一的主视图,两个按钮"开始WfA"one_answers"开始WfB",在这种情况下,工作流"WfB",例如,必须显示以下视图:

 -> ViewA <-> ViewB <-> ViewC ->   ViewC <-> ViewD -> 

该序列描述了后退/下一步按钮,如果取消按钮被按下,它必须立即移动到主视图。

有谁知道这个问题的一个清晰而好的解决方案吗?

以下概念(来自您的帖子)通常违反DRY, SRP和OOP:

每个视图都有"后退"、"下一步"one_answers"取消"按钮

对于一个向导框架,你通常会有一个单一的父视图来承载这些按钮。应该有一个控制器来管理页面集合(LinkedList<>看起来很合适),并根据您的流逻辑将页面加载到父页面。

我在这里描述的通用架构适合MVC。看一看

>

:您的向导容器可以是一个窗体(具有可调整大小的面板以容纳页面),但您的页面需要自定义控件,以便您可以在父控件中托管它们。

最新更新