Короткий ответ: это зависит от того, с какими последующими воздействиями вы хотите иметь дело.
В общем, когда есть два способа сделать что-то, это обычно означает, что оба способа имеют свои преимущества.На ум приходят несколько примеров (SQL против NoSQL, автоматическая или ручная передача, переменная или постоянная, клиентская и серверная стороны и т. Д.).Результатом этого является то, что вы обязаны получить множество людей с обеих сторон с мнениями, которые имеют свои достоинства.
Поэтому возникает вопрос: когда объект может манипулировать своими собственными данными и когда мне нужно разделить их?out.
Лично я предпочитаю, чтобы структуры данных были простыми, основная обязанность которых - обеспечить согласованность данных.Ответственность за манипулирование или использование этих данных будет нести ответственность других классов.Это имеет тенденцию помогать мне разделять политику и реализацию.Например, если я хочу реализовать политику кэширования, мне нужно только посетить слой, который получает данные, а не объекты, которые хранят или манипулируют данными.
С другой стороны, это затрудняет использование APIтак как не всегда очевидно, где вещи.Это также создает вероятность того, что одна и та же политика создается в нескольких местах (и каждый слой в конечном итоге реализует некоторое кэширование)
Например, если методы String, такие как Split и Join и Substring, было нелегко найти вСтроковый класс и вместо этого где-нибудь еще, например, как гипотетический класс Parse, вполне вероятно, что прежде чем я нашел этот гипотетический класс Parse, я написал бы несколько дрянных версий этих методов.Пример из реальной жизни это когда люди пишут методы, идентичные методам в классе Math, потому что они не знают об этом.
В конце концов, если вы не хотите иметь дело с последующим воздействием, котороеизменение способа работы метода Send может потребовать посещения большого количества классов, а затем переместить его за пределы классов.
Если вы не хотите иметь дело с людьми, случайно внедрившими собственную отправкуметод, и вы не хотите постоянно его усиливать, тогда лучше поместить его в класс.