所以要求是为多步向导/单步向导创建一个通用接口(interface)。由于每个向导可能没有所有按钮(单步向导只有取消和提交,多步第一个屏幕有取消、下一步等)。
我应该为每个按钮创建一个单独的界面吗
interface CancelButton
{
void onCancelClick();
}
interface NextButton
{
void onNextClick();
}
等等?每个向导只实现他们需要的那些?
这个用例有更好的设计模式吗?
谢谢。
最佳答案
似乎您只需要一个简单的类层次结构。你会有一些基础摘要 WizardPage
每个基本向导页面案例的类和子类,例如 WizardWelcomePage
, WizardLastPage
, WizardIntermediatePage
.然后将向导定义为向导页面的集合,并且每个页面都知道它应该显示哪些按钮。不是特定的设计模式,简单的 OOP。
这个想法的另一个变体,使事情更灵活是使基础 WizardPage
接受 WizardButton
的集合其构造函数中的实例(和 WizardCancelButton
, WizardAcceptButton
, WizardNextButton
将是子类)。这将允许您为向导页面和向导按钮拥有单独的层次结构(变体)。我认为这可以被认为是一种桥模式。每个按钮子类都将在其构造函数中请求另一个接口(interface),以便在单击它们时可以将此信息发送到WizardEngine
。这将采取适当的行动:移动到下一页,取消或接受。您可能还需要来自每个 WizardPage
的另一条事件链。指示内容何时有效或无效,以便可以通过 WizardEngine
启用\禁用相应的按钮.
关于design-patterns - 向导用户界面的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12098057/