Разве Информационный Эксперт и Скажи, Не спрашивай в противоречии с принципом Единой Ответственности?

Информационно-эксперт,Tell-Дон»т-Ask, а такжеSRP часто упоминаются вместе как лучшие практики. Но я думаю, что они расходятся. Вот что яЯ говорю о.

Кодекс, который поддерживает СРП, но нарушает правилаT-Ask & Info-Expert:

Customer bob = ...;
// TransferObjectFactory has to use Customer's accessors to do its work, 
// violates Tell Don't Ask
CustomerDTO dto = TransferObjectFactory.createFrom(bob); 

Кодекс, который поддерживает Tell-Don 'T-Ask & Инфо-Эксперт, но нарушает СРП:

Customer bob = ...;
// Now Customer is doing more than just representing the domain concept of Customer,
// violates SRP
CustomerDTO dto = bob.toDTO();

Пожалуйста, напишите мне, как эти практики могут мирно сосуществовать.

Определения терминов,

Информационный эксперт: объекты, которые имеют данные, необходимые для операции, должны содержать операцию.

Скажи ДонСпроси: не делай• запрашивать у объектов данные для выполнения работы; сказать объектам, чтобы сделать работу.

Принцип единой ответственности: каждый объект должен иметь узко определенную ответственность.

Ответы на вопрос(6)

Ваш ответ на вопрос