Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision |
wiki:pd [2024/08/28 23:49] – admin | wiki:pd [2024/08/28 23:54] (current) – admin |
---|
Se suele decir que el Principio de Demeter recomienda que los métodos de una clase solo deben hablar con sus "amigos", es decir, con métodos de la propia clase o con métodos de objetos que reciben como parámetro o que crean. Por otro lado, no es recomendable hablar con los amigos de los amigos. | Se suele decir que el Principio de Demeter recomienda que los métodos de una clase solo deben hablar con sus "amigos", es decir, con métodos de la propia clase o con métodos de objetos que reciben como parámetro o que crean. Por otro lado, no es recomendable hablar con los amigos de los amigos. |
| |
Un ejemplo — formulado por David Bock ([[https://www2.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/paper-boy/demeter.pdf|enlace]]) — ilustra con claridad los beneficios del Principio de Demeter. El ejemplo se basa en un escenario con tres objetos: un repartidor de periódicos, un cliente y su cartera. Se produce una violación del Principio de Demeter si, para recibir el importe de un periódico, el repartidor tiene que ejecutar el siguiente código: | Un ejemplo — formulado por David Bock ([[https://www2.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/paper-boy/demeter.pdf|enlace]]) — ilustra con claridad los beneficios del Principio de Demeter. El ejemplo se basa en un escenario con tres objetos: un repartidor de periódicos, un cliente y su billetera. Se produce una violación del Principio de Demeter si, para recibir el importe de un periódico, el repartidor tiene que ejecutar el siguiente código: |
| |
<code java> | <code java> |
| |
| |
En el nuevo código, el cliente no permite el acceso a su cartera. Por el contrario, el repartidor ni siquiera se entera de que el cliente tiene una cartera. Esa información está encapsulada en la clase Cliente. En lugar de eso, el cliente ofrece un método `pagar`, que debe ser llamado por el repartidor. Finalmente, una excepción indica cuando el Cliente no tiene suficientes recursos para pagar el periódico. | En el nuevo código, el cliente no permite el acceso a su billetera. Por el contrario, el repartidor ni siquiera se entera de que el cliente tiene una billetera. Esa información está encapsulada en la clase ''Cliente''. En lugar de eso, el cliente ofrece un método ''pagar'', que debe ser llamado por el repartidor. Finalmente, una excepción indica cuando el Cliente no tiene suficientes recursos para pagar el periódico. |