对于一个项目,我需要对提出问题的各种幻灯片进行输入。然后,我需要根据每个问题决定接下来要显示哪些幻灯片,这样我们就不会向用户询问不必要的问题。我的问题是如果存在的话,最好的一般做法是什么。我的每张幻灯片都包含在自己的对象中,因为它们不仅显示信息而且还存储信息。我不想用10多张幻灯片来做这件事:
public void nextStep(){
if(track.getCurrent() instanceof Access){
}
else if(track.getCurrent() instanceof BasicInformation){
}
else if(track.getCurrent() instanceof CustomerSelect){
}
else if(track.getCurrent() instanceof DocumentSelect){
}
else if(track.getCurrent() instanceof Export){
}
else if(track.getCurrent() instanceof Field){
}
else if(track.getCurrent() instanceof HourlyWork){
}
else if(track.getCurrent() instanceof Import){
}
else if(track.getCurrent() instanceof MoreInformation){
}
else if(track.getCurrent() instanceof Plumbing){
}
else if(track.getCurrent() instanceof Pumps){
}
else if(track.getCurrent() instanceof QuoteType){
}
}
如果存在更好的选择。我知道这是一个棘手的问题,如果我感到困惑,请提前对不起。
答案 0 :(得分:0)
假设:BasicInformation
(以及if
声明中的所有其他班级类型)都是某种形式/页面'。
您可以使用方法BaseForm
和getNext()
从超类(即getPrevious()
)继承它们,并定义每个实现中的位置。这将有助于您根据当前的表格/页面确定下一页/上一页的位置'
例如:
public BasicInformation extends BaseForm{
private BaseForm next;
private BaseForm previous;
// setters for the above
// ...
public BaseForm getNext(){
return next;
}
public BaseForm getPrevious(){
return previous;
}
}
然后在你的程序中你可以
public void nextStep(BaseForm track){
BaseForm nextStep = track.getNext();
// do whatever you want with nextStep
// ...
}