Debería un objeto escribirse en un archivo, o debería actuar otro objeto sobre él para realizar E / S?

NOTA: ¡Perdón por la larga pregunta!

Estoy tratando de entender algunas áreas clave detrás de la orientación a objetos y no pude decidir de una forma u otra sobre mi pregunta en particular.

Digamos que tengo un objeto lleno de datos encantadores. Clase bob.

Bob myBob = new Bob("This string is data");

Digamos que quiero guardar el contenido de myBob en un archivo xml (bob.xml)

Debería hacer que un objeto actúe sobre Bob para escribir el contenido, o debería hacer que myBob haga esto?

Caso 1: Actuar sobre el objeto

Writer myWriter = new Writer(myBob, "C:\\bob.xml");

Case 2: Guardar método

myBob.Save("C:\\bob.xml");

Algunas personas están del lado de la opción uno, ya que si se cambia el código para escribir archivos, no es necesario actualizarlo en todos los métodos de Guardar; promoción de reutilización de código, supongo. Mi problema con esto es sacar todos los datos de los objetos que pueden tener datos privados sin acceso.

El caso de la opción dos es que el método solo actúa sobre los datos que posee el objeto y así es como debe ser. Sin interferencias de otros objetos.

¿O la respuesta a mi pregunta es uno de esos problemas "dependientes de casos"? Si es así, ¿cómo sabe cuándo se prefiere un método sobre el otro?

Respuestas a la pregunta(14)

Su respuesta a la pregunta