Cita:
Iniciado por moron
Creo que además es una forma de desacoplar los objetos y no cargar de responsabilidad a algunos objetos de mas
Justamente estas acoplando más los objetos. Estas asignando responsabilidades al libro que no son de él. ¿Porque tiene el libro que encargarse de conectarse con la base de datos? O sea si quieres tener objetos que cumplan el patron de "creator" o "experto" que no conozco (sí conozco patrones creacionales como builder, factory, singleton) tenlos, pero que no sea el libro.
El acoplamiento es una forma de medir el grado de relacion entre varios objetos. Si tu libro es quien instancia a los autores, entonces decimos que estan muuy acoplados los libros con los autores, pues en tu libro hay muchas lógicas distintas, entre ellas:
a) como estan formados los autores
b) como es tu esquema de persistencia
c) no es independiente de tu capa de presentacion donde utilizas los ids o Oids.
Lo que yo haria es oootro objeto que se encargue de la persistencia, y que el libro solo reciba autores. De esa manera el libro sí esta desacoplado y el acoplamiento ahora va a estar en quien persiste porque es él quien va a saber como estan formados los autores. Por lo menos así tus autores mañana pueden cambiar sin que los libros se enteren.
Y no es cuestión de escribir más o menos codigo. Lo importante es que son unidades lógicas distintas, probablemente con reglas distintas cada uno. Si le sumas responsabilidades que no son propias el dia de mañana esos objetos van a ser incomprensibles... Y yo prefiero tener muchos mas objetos a eso.
Espero que se haya entendido algo :P
Suerte!