Il mio team deve progettare un'API che invii oggetti a una coda nel cloud e recuperi gli oggetti da esso. I dati vengono inseriti nella coda come byte[]
.
Fino ad ora abbiamo 2 idee che mi piacerebbe sentire i tuoi appunti / idee su di loro:
Prima versione:
-
public void push(String object)
-
public String retrieve()
Note: per supportare questa API, ogni consumatore deve implementare una logica per convertire i suoi oggetti in String
s e viceversa.
I vantaggi:
- Facile da implementare.
- Facile da mantenere.
Svantaggi:
- Il consumatore della nostra API deve progettare una soluzione che non sia correlata alla sua logica per convertire i suoi oggetti in
String
s. - Il consumatore della nostra API deve chiamare un metodo che converte i suoi oggetti da solo anche se non è correlato alla sua logica.
Seconda versione:
-
public void <T> push(T object)
-
public T <T> retrieve(Class<T> type)
I vantaggi:
- Facile da implementare. (In Java, possiamo usare
ObjectMapper
) - Facile utilizzo di questa API.
- Il consumatore della nostra API non ha bisogno di convertire manualmente i suoi oggetti in qualcos'altro.
Svantaggi:
- I tipi di utenti della nostra API devono supportare% conversioni di
Json
- in modo ricorsivo, una classe con proprietà dell'oggetto, tutti i tipi di proprietà devono supportare% conversioni diJson
. - Se il consumatore non legge attentamente la documentazione, qualcosa non funzionerà o ci sarà un bug silenzioso.
Note generali:
- L'API deve essere supportata per almeno 4 anni.