因此,需要为多步向导/单步向导创建通用接口。由于每个向导可能没有所有按钮(单步向导只有取消和提交,因此多步骤第一个屏幕有取消,下一个等等)。
我应该为每个按钮创建一个单独的界面
interface CancelButton
{
void onCancelClick();
}
interface NextButton
{
void onNextClick();
}
等等?每个向导只实现他们需要的那些?
这个用例有更好的设计模式吗?
感谢。
答案 0 :(得分:1)
看起来你只需要一个简单的类层次结构。对于每个必要的向导页面案例,您都有一些基本的抽象WizardPage
类和子类,如WizardWelcomePage
,WizardLastPage
,WizardIntermediatePage
。然后,向导被定义为向导页面的集合,每个页面都知道它应该显示哪些按钮。不是特定的设计模式,简单的OOP。
这个想法的另一个变体,即使事情更灵活,就是让基础WizardPage
在其构造函数中接受WizardButton
个实例的集合(WizardCancelButton
,{{1 },WizardAcceptButton
将是子类)。这将允许您为向导页面和向导按钮具有单独的层次结构(变体)。我认为这可以被视为桥模式。每个按钮子类都会在其构造函数中请求另一个接口,以便在单击它们时,它们可以将此信息发送到WizardNextButton
,这将执行相应的操作:移动到下一页,取消或接受。您可能还需要从每个WizardEngine
开始的另一系列事件来指示内容何时生效或无效,以便WizardPage
启用\禁用相应的按钮。