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