我已经实现了带有复合类和叶类的复合模式。复合类包含其子对象(可能是叶类型或复合类型)的 ArrayList。每个类,无论是叶类还是复合类,都有一个名为“satisfied”的布尔变量。我的复合类可以是“和”类,也可以是“或”类 - 如果它是“和”类,则它需要其所有子级都满足才能满足。如果它是一个“或”类,则它需要至少有一个子级满足才能满足。
我在为复合类编写递归函数“isSatisfied”来检查其所有子级是否都满足时遇到问题,因此它也会满足。它是递归的,因为如果复合对象具有复合的子对象,它也需要检查其所有子对象等。这是我尝试过的(这是不正确的)。任何帮助,将不胜感激。
public boolean isSatisfied(Component g) {
if (type.equals('and')) {
for (Component i : ((Composite) g).getChildren()) {
if (i instanceof Composite) { //it's a composite
isSatisfied(i);
} else { //it's a leaf
if (i.satisfied() == true) {
return true;
} else {
return false;
}
}
}
return false;
} else if (type.equals('or')) {
for (Component i : ((Composite) g).getChildren()) {
if (i instanceof Composite) {
isSatsified(i);
} else {
if (i.satisfied() == true) {
return true;
}
}
}
return false;
}
}
慕标琳琳
相关分类