2011-04-20 16 views
5

Design #1¿Qué diseño admite bajo acoplamiento?

Design #2

Qué diseño es compatible con el acoplamiento total baja? ¿y por qué?

+0

El segundo enfoque enfoca todos los "smarts" en el registro, lo que parece agradable. THen Payment and Sale simplemente "hacen lo que se les dice". En el primer caso, la responsabilidad es más distribuida, y tal vez más difícil. Pero ... ¡no estoy seguro de cómo se miden realmente los bajos acoplamientos! También me interesaré ver las próximas respuestas. :-) –

+0

Creo que puede encontrar un libro ([verlo en línea] (http://books.google.co.uk/books?id=9CL446IzhuAC&pg=PA38&lpg=PA38&dq=events+chapter+one+coupling&source=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)) "basada en eventos de programación: teniendo eventos para el límite " no hacer tome el título al pie de la letra: el Capítulo Uno brinda una descripción y método perspicaces para reducir/cambiar el acoplamiento a formas menores de comportamiento acoplado. –

Respuesta

1

En el primer pago está acoplado a la Venta. En el segundo está acoplado a Registro y Venta. Diría que el primero tiene un acoplamiento más bajo porque Register no tiene ningún concepto de pago. El pago podría eliminarse completamente por completo y no requeriría cambios en el Registro. En el segundo caso, si eliminaste el pago, tanto el registro como la venta tendrían que cambiar.

+0

Desde el punto de vista de un creador, un registro registra el pago. Por lo tanto, contiene información sobre el pago.Entonces, por definición, debería crear el pago no? – user478636

+1

Eso no es relevante. Si eliminó todos los registros, pagos y ventas, reemplácelos con Object1, Object2 y Object3. Yo diría que uno es el más desacoplado. Dibuje un gráfico de dependencia simple y cuente las líneas. Modo 2: el registro depende de la venta y el pago. La venta depende del pago -> eso es 3 líneas. Modo 1 - El registro depende de la venta, la venta depende del pago -> eso es 2. 2 es menos de 3, por lo que hay menos acoplamiento – nsfyn55

+1

"En informática, el acoplamiento o la dependencia es el grado en que cada módulo de programa depende de cada uno los otros módulos ". – nsfyn55

1

En la primera Payment es creada por Sale por lo que esto es más acoplado.

en segundo uno hay baja acoplamiento con la inyección de dependencia - http://en.wikipedia.org/wiki/Dependency_injection, bruja es un patrón de diseño que separa comportamiento de resolución de dependencias, por lo tanto desacoplamiento componentes altamente dependientes. Payment y Sale fueron altamente dependientes en la primera imagen.

+1

No estoy seguro de estar de acuerdo con esto (por razones obvias :)). DI o no DI no hacen el diseño más o menos acoplado. En este caso, una de esas clases necesita instanciar el pago sobre la marcha. Incluso si usa DI, sería un acoplamiento más bajo para encapsular completamente el pago dentro de la Venta. Parece que un diseño más sensato sería tener Register acceptPayment (p) y crear una venta, pero no es mi registro – nsfyn55

+0

Register Debería ser el que delega esta tarea en Sale, de lo contrario, el registro se volverá incoherente – user478636

+0

@ nsfyn55 dices DI doesn 't (hace el diseño más o menos acoplado) :) Digo que sí, con DI Paymant se puede reutilizar ... incluso puede tener una instancia;) – dantuch

1

No veo el punto en el primer ejemplo. Registrarse no es necesario?

En el segundo ejemplo, se puede usar cualquier tipo de pago. (Visa, efectivo, etc.). Por lo tanto, está más débilmente acoplado.

Cuestiones relacionadas