Situazione:
Sto implementando DDD nel mio primo progetto e vorrei chiarire come implementare correttamente il modello di strategia ( nel mio caso controlla se il token API è attivo). Questa è una regola aziendale dell'istanza di ApiToken, ma potrebbero esserci varie implementazioni di questa strategia, quindi vorrei delegare questa logica all'implementazione esterna.
Implementazione:
ApiToken
class:
public abstract class ApiToken {
public abstract boolean isActive(TokenActiveStrategy strategy);
}
e questo è un contratto di strategia token:
public interface TokenStrategy {
boolean isActive(final ApiToken token);
}
E utilizzo:
TokenStrategy tokenStrategy = new DatabaseTokenStrategy();
if (!token.isActive(tokenStrategy)) {
throw new AuthenticationException(ExceptionCodeType.TOKEN_NOT_ACTIVE);
}
e classe ApiToken concreta:
@Override
public boolean isActive(final TokenStrategy strategy) {
return strategy.isActive(this);
}
Domanda:
Va bene per quanto riguarda i principi di DDD per delegare il controllo della regola aziendale di dominio out dell'oggetto dominio?