Supponiamo che abbia un'API di riposo con un metodo POST e GET.
Se voglio sovrascrivere una risorsa nell'API, posso chiamare il metodo GET per ottenere l'elemento originale e quindi chiamare il metodo POST per sostituire quella risorsa dopo che ho finito di modificarlo.
Dovrei aggiungere la funzionalità di aggiornamento alla classe client come nel primo approccio o dovrei creare una nuova classe e aggiungere la funzionalità di aggiornamento e chiamare la classe client esternamente come nel secondo approccio
Primo approccio
class BookApiClient{
Client restClient = ClientBuilder.newClient();
public Book getBook(String id){
// code to get book using rest client
}
public void postBook(){
//code to post a book
}
public void updateBookTitle(String id, String newTitle){
Book book = getBook(id);
book.setTitle(newTitle);
postBook(book);
}
}
Secondo approccio
class BookUpdater{
BookApiClient bookService;
public BookUpdater(BookApiClient bookService){
this.bookService = bookService;
}
public void updateBookTitle(String id, String newTitle){
Book book = bookService.getBook(id);
book.setTitle(newTitle);
bookService.postBook(book);
}
}
Sarebbe una violazione del principio di responsabilità singola aggiungere il metodo updateBookTitle alla classe client o farlo come un altro come nel secondo approccio