4

所以要求是为多步向导/单步向导创建一个通用接口。由于每个向导可能没有所有按钮(单步向导只有取消和提交,多步第一个屏幕有取消、下一步等)。

我应该为每个按钮创建一个单独的界面吗

interface CancelButton 
{
   void onCancelClick();
}

interface NextButton 
{
   void onNextClick();
}

等等?每个向导只实现他们需要的那些?

这个用例有更好的设计模式吗?

谢谢。

4

1 回答 1

1

似乎您只需要一个简单的类层次结构。每个基本向导页面案例都有一些基本抽象WizardPage类和子类,例如WizardWelcomePage, WizardLastPage, WizardIntermediatePage. 然后将向导定义为向导页面的集合,并且每个页面都知道它应该显示哪些按钮。不是特定的设计模式,简单的 OOP。

这个想法的另一个变体,使事情更灵活,是使基础在其构造函数WizardPage中接受一组WizardButton实例(并且WizardCancelButton, WizardAcceptButton,WizardNextButton将是子类)。这将允许您为向导页面和向导按钮拥有单独的层次结构(变体)。我认为这可以被认为是一种桥模式。每个按钮子类都将在其构造函数中请求另一个接口,以便当它们被单击时,它们可以将此信息发送给WizardEngine将执行适当操作的按钮:移动到下一页、取消或接受。您可能还需要另一个事件链WizardPage来指示内容何时变为有效或无效,以便可以通过WizardEngine.

于 2012-09-01T02:59:53.913 回答