¿No son expertos y expertos en información no preguntes en desacuerdo con el principio de responsabilidad única?

Información-Experto, Decir-no-preguntarySRP A menudo se mencionan juntos como mejores prácticas. Pero creo que están en desacuerdo. Aquí es de lo que estoy hablando.

Código que favorece a SRP pero viola Tell-Don'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); 

Código que favorece a Tell-Don't-Ask & Info-Expert pero viola el SRP:

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

Por favor, infórmeme sobre cómo estas prácticas pueden coexistir pacíficamente.

Definiciones de los términos,

Experto en información: los objetos que tienen los datos necesarios para una operación deben hospedar la operación.

Diga No pregunte: no le pida a los objetos datos para poder trabajar; Dile a los objetos que hagan el trabajo.

Principio de responsabilidad única: cada objeto debe tener una responsabilidad estrechamente definida.

Respuestas a la pregunta(6)

Su respuesta a la pregunta