AnyOfRuleGroup.java
package com.designpatterns.structural.composite.applied;
import java.util.List;
import java.util.stream.Collectors;
public class AnyOfRuleGroup implements ApprovalRule {
private final List<ApprovalRule> rules;
public AnyOfRuleGroup(List<ApprovalRule> rules) {
this.rules = List.copyOf(rules);
}
@Override
public boolean isSatisfied(LoanApplication application) {
return rules.stream().anyMatch(rule -> rule.isSatisfied(application));
}
@Override
public String description() {
String joined = rules.stream().map(ApprovalRule::description).collect(Collectors.joining(", "));
return "ANY OF (" + joined + ")";
}
}