I use spring boot 2.
I need to validate many condition, instead of creating many if, I create a class for every condition who implements isValid method.
public interface Rulecondition<T>{
boolean isValid(){
}
public class ClientGroup implements Rulecondition<Billing>{
private Billing billing;
public ClientGroup(Billing billing){
this.billing=billing;
}
@Override
public boolean isValid(){
return true; //only for example...
}
}
I create a class who use a stream of all condition and verify if everything is valid
@Component
public class ConditionRuleEngine{
private List<Rulecondition> rules = new ArrayList<>();
public ConditionRuleEngine(){
}
public void addRule(Rulecondition rule){
rules.add(rule);
}
public boolean conditionApply(){
retunr rules.stream().allMatch(r->.isValid()));
}
}
In a service class, I autowired ConditionRuleEngine
@Service
public class OperationService(){
private final ConditionRuleEngine conditionRuleEngine;
@Autowired
public OperationService OperationService(final ConditionRuleEngine conditionRuleEngine){
this.conditionRuleEngine=conditionRuleEngine;
}
public void execute(Billing billing){
//need to add condition
conditionRuleEngine.run();
}
}
Is there any better way to add condition then creating a new?
ClientGroup cg = new ClientGroup(billing);
conditionRuleEngine.add(cg);
Aucun commentaire:
Enregistrer un commentaire