Design pattern come gestire la validazione degli oggetti?

0

Penso che ci sia qualche schema di progettazione per lavorare con gli oggetti e i suoi stati. Nella mia API REST ho un oggetto token di accesso, questi oggetti contengono informazioni sui client autenticati:

public class AccessToken {

    private final String accessToken;
    private DateTime expiration;
    private DateTime created;

}

ma questo AccessToken ha una scadenza. Quando controllo, se il client è loggato (= esiste un token), vorrei verificare se il token non è scaduto.

Domanda

Dovrebbe essere questo metodo - ad es. .isValid() , .isExpired() per una migliore chiarezza e semplicità essere in AccessToken class o dovrei avere un'altra classe che farà una convalida?

    
posta Artegon 15.09.2015 - 14:51
fonte

2 risposte

1

Penso che sia responsabilità di AccessToken fornire se è scaduta o meno. Dare un nome al tuo metodo isExpired sembra meno ambiguo per me.

public class AccessToken {

    private final String accessToken;
    private DateTime expiration;
    private DateTime created;

    public final boolean isExpired() {
        return now > expiration;
    }

}
    
risposta data 15.09.2015 - 15:33
fonte
1

Non sono sicuro che ci sia un pattern (o meno) con nome per questa tecnica - ma in entrambi i casi non lo farei.

Il DTO (oggetto di trasferimento dati) è lì per trasferire i dati sul filo, la logica aziendale o dell'applicazione è legato all'API REST.

Da Wikipedia;

... a DTO does not have any behavior except for storage and retrieval of its own data (accessors and mutators). DTOs are simple objects that should not contain any business logic that would require testing.

Se si desidera fornire al client una classe di utilità / metodo per verificare prima se il token è ancora valido prima di effettuare la chiamata REST, fornirei al client una classe di questo tipo al di fuori del DTO;

class AccessTokenValidation {
  public bool isValid(AccessToken token) {
    // client side logic as required
    return now > token.expiration;
  }
}
    
risposta data 15.09.2015 - 15:38
fonte

Leggi altre domande sui tag