You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/docs/3 Curso/Primer Semestre/DS/apuntes_para_examen_teoría.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -354,6 +354,16 @@ Posible solución:
354
354
355
355

356
356
357
+
## ¿Qué quiere decir que las interfaces hacen de cortafuegos?
358
+
359
+
==Pregunta típica de examen==
360
+
361
+
En un buen diseño software, en **la raíz** de una jerarquía siempre debería situarse una interfaz ya que representan un contrato como resultado de las necesidades del cliente. A éste no le interesa el cómo (lo hace), sino el qué (deben poder hacer los objetos que implementan dicha interfaz).
362
+
363
+
Si no lo hiciéramos así y usásemos una clase base (abstracta o no) como raíz de la jerarquía, nos estaríamos atando a una determinada funcionalidad que ante un cambio en los requisitos lo que era común en las subclases ya no lo sea.
364
+
365
+
En definitiva, con una **interfaz** el cliente no se inmuta si cambia el cómo, mientras que con una **clase base**, se vería afectado ante un cambio.
366
+
357
367
## Síntomas de un diseño pobre
358
368
359
369
==Pregunta típica de examen==
@@ -616,9 +626,16 @@ Posible solución:
616
626
617
627
## ¿Qué es un buen diseño?
618
628
629
+
==Pregunta típica de examen==
630
+
619
631
- Un sistema está bien diseñado si:
620
632
- Es fácil de comprender
633
+
- Si la responsabilidad se indica claramente (nombres adecuados, se usan patrones de diseño)
621
634
- Es fácil de cambiar
635
+
- Hay que tener en cuenta que todo programa sufrirá cambios, y el objetivo del diseño es facilitarlos. De esta forma, *diseñar para el cambio* significa:
636
+
- Sólo hay que cambiar en un único sitio (o añadiendo código nuevo -> Principio Abierto-Cerrado)
637
+
- Es fácil determinar el lugar de dicho cambio
638
+
- Debemos centrarnos en clases y métodos cohesivos (una única responsabilidad)
0 commit comments