Так:
class Book {
private String name;
private String text;
public void store(Place place) {
place.store(name, text);
}
}
interface Place {
void store(String name, String text);
}
class Library implements Place {
@Override
public void store(String name, String text) {
// запись в БД
}
}
// кто-то вызывает
book.store(place);
Или так:
class Book {
private String name;
private String text;
public String getName() {
return name;
}
public String getText() {
return text;
}
}
class Library {
public void store(String name, String text) {
// запись в БД
}
}
// кто-то вызывает
library.store(book.getName(), book.getText());
Первый способ гибче, но оверхед есть небольшой, к тому же интерфейс book может распухнуть, если мы начнем много чего пихать в него, например проверку прав доступа при чтении. Второй способ тупой, но не тестируемый и мы раскрываем сущность book.
И вообще, как вы подходите к проектированию системы, когда получаете ТЗ?