Если у вас есть метод, в котором входной параметр может быть выходным.
Допустим, у нас есть метод save, который генерирует автоматически сгенерированный идентификатор, который клиент может быть заинтересован использовать после вызова save ().
Person
- id (автоматически сгенерированный)
- name
- ... (другие поля)
Если вы создадите сигнатуру метода следующим образом:
1.
public void save(Person person);
Клиентский звонок:
personService.save(person);
System.out.println(person.getId());
2.
public Person save(Person person);
Клиентский звонок:
person = personService.save(person);
System.out.println(person.getId());
Мы знаем, чтов вызове метода, который получает объект, передается ссылка на этот объект, поэтому любые изменения, внесенные в объект, будут восприниматься другими, если они имеют одну и ту же ссылку.Но в случае удаленных вызовов происходит сериализация / десериализация, поэтому моя ссылка на объект отличается от ссылки на объект удаленной службы.Поэтому, даже если в него внесены изменения, клиент не заметит разницы.
В настоящее время я знаю, что метод не будет удаленным вызовом, поэтому я мог разработать его с использованием первой сигнатуры.Но что, если в будущем это изменится, и его нужно будет называть удаленным вызовом.
Поэтому мой вопрос: должен ли я разработать свой API, думая, что в будущем этот API может быть вызван как удаленный вызов, ине используете параметр объекта как способ вернуть значение клиенту (2), или я должен разработать свой API в соответствии с моей реальной ситуацией, когда служба не является удаленной (1)?
Спасибо