Grady Booch en "Análisis Orientado a Objetos y Diseño":
"La idea de cohesión también viene de diseño estructurado En pocas palabras, la cohesión mide el grado de conectividad entre los elementos de un solo módulo (y . para el diseño orientado a objetos, una única clase u objeto). La forma menos deseable de cohesión es la cohesión fortuita, en la que las abstracciones totalmente no relacionadas son lanzadas en la misma clase o módulo. Por ejemplo, considere una clase que comprende las abstracciones de perros y naves espaciales, cuyos comportamientos no guardan relación. La forma más deseable de cohesión es es la cohesión funcional, en la que los elementos de una clase o módulo trabajan juntos para proporcionar un comportamiento bien delimitado. Por lo tanto, la clase Perro es funcionalmente coherente si su semántica abrazan el comportamiento de un perro, el perro entero, y nada más que el perro."
perro Subsitute con el Cliente en lo anterior y podría ser un poco más claro. El objetivo es, en realidad, apuntar a la cohesión funcional y alejarse de la cohesión casual tanto como sea posible. Dependiendo de sus abstracciones, esto puede ser simple o podría requerir alguna refactorización.
Nota: la cohesión se aplica tanto a un "módulo" que a una sola clase, es decir, un grupo de clases trabajando juntas. Entonces, en este caso, las clases Cliente y Orden todavía tienen una cohesión decente porque tienen esta relación fuerte, los clientes crean pedidos, los pedidos pertenecen a clientes.
Martin Fowler dice que le sea más cómodo llamándolo el "Consejo de Demeter" (véase el artículo Mocks aren't stubs):
"probadores con imitaciones qué hablar más acerca de cómo evitar 'descarrilamientos' - cadenas de método de estilo de getThis(). getThat(). getTheOther(). Evitar cadenas de métodos también se conoce como seguir la Ley de Demeter. Mientras que las cadenas de métodos son un olor, el problema opuesto de los objetos de los hombres medios hinchados con los métodos de reenvío también es un olor. Siempre sentí que estaría más cómodo con la Ley de Demeter si se llamara Sugerencia de Demeter.) "
Esa suma Siento muy bien de dónde vengo: es perfectamente aceptable y, a menudo, necesario tener un nivel de cohesión más bajo del que podría exigir el estricto cumplimiento de la "ley". Evite la cohesión casual y apunte a la cohesión funcional, pero no se obsesione con los ajustes donde sea necesario para encajar de forma más natural con su abstracción de diseño.
Aunque un poco fuera de tema recomiendo encarecidamente Ted Faisons "Programación basada en eventos: llevando los eventos al límite" [enlace] (http://books.google.co.uk/books?id=9CL446IzhuAC&pg=PA38&lpg= PA38 y dq = eventos + capítulo + uno + acoplamiento y fuente = BL & ots = qmJTOuCz90 y sig = EZKvZBjF8QmGohatC97HsmAqG0c & hl = es & ei = wj6tTqe5LcTX8gON_YyiCw & SA = X & oi = book_result y ct = resultar y resnum = 6 y ved = 0CEMQ6AEwBQ # v = OnePage y q = eventos% 20chapter% 20one% 20coupling & f = false). Proporciona un gran desglose de los problemas comunes de acoplamiento y proporciona un buen sistema para medir el grado de acoplamiento en un sistema dado –
Al violar el LoD, el hecho de que los enlaces adicionales sean ** "incorrectos" depende de la naturaleza del acoplamiento. clases enlazadas **: si estas son muy prominentes (piense en Fila, Columna, Celda en la implementación de Excel), el acoplamiento a ellas no es problemático y el LoD es demasiado restrictivo. Del mismo modo, si las clases en cuestión son deliberadamente meras clases de datos sin ningún comportamiento. –