Samuel Martín, Consultor Tecnológico de Autentia habla sobre el principio abierto/cerrado (open/closed principle), dentro de los workshops de Patrones de Diseño de Autentia.
2. Principio Abierto-Cerrado(Open-Closed-Principle)
Bertrand Meyer es el responsable de acuñar el término
open/closed principle en su libro “Object Oriented
Software Construction” - 1988
Martin Fowler ha sido el responsable de popularizarlo
junto con el resto de principios S.O.L.I.D (first five
principles) en “Refactoring: Improving the Design of
Existing Code” - 1999
3. S.O.L.I.D - ¿Cuáles son?
Acrónimo introducido por Michael Feathers
S: Single Responsibility Principle (SRP) - Principio de
responsabilidad única
O: Open-Closed Principle (OCP) - Principio Abierto
Cerrado
L: Liskov Substitution Principle(LSP) - Principio de
sustitución de Liskov
I: Interface Segregation Principle(ISP) - Principio de
segregación de la interfaz
D: Dependency Inversion Principle(DIP) - Principio de
Inversión de la dependencia
5. OCP - Introducción
En un mal diseño, cuando se modifica una funcionalidad
durante el ciclo de vida, suele conllevar una cadena de
cambios en módulos dependientes unos de otros.
Fuente: http://appraisaltodayblog.files.wordpress.com/2013/01/stress-hitting-head-on-keyboard.jpg?w=400&h=267
6. OCP - Introducción
Para evitar esto, debemos usar el principio OC.
Las clases deben ser capaces de extenderse sin
modificar su contenido.
7. OCP - Introducción
¿Cómo se consigue esto?
La forma más común es a través de interfaces o clases
abstractas de las que depende una implementación
concreta.
Cuando cambie la funcionalidad la interfaz se mantiene
y sólo cambia la implementación.
8. Ejemplo - Mal diseño
Nuestra empresa se ha dedicado desde sus inicios a vender agua
embotellada
Ahora se plantea vender botellas de NesTea
Fuente: http://2.bp.blogspot.com/_DIPF2NH_r-w/TEzHMqABkhI/AAAAAAAAAlc/qRzfe7-mTuE/s1600/water_bottles_caps.jpg
12. En caso de estar ante una modificación demasiado
drástica normalmente tendremos que modificar la
interfaz o agregar otra, como en el caso de que la
empresa empiece a comercializar latas de aluminio.
Pero esto deben ser casos excepcionales.
Fuente:
http://s01.s3c.es/imag/_v0/640x419/6/8/0/latas.jpg
OCP - Caso extremo
13. OCP - Conclusiones
Seguir este principio ayudará a que nuestros sistemas
sean más mantenibles en el tiempo y soporten mejor los
cambios.
Seguir este principio demasiado a rajatabla puede ser
perjudicial para el proyecto, ya que el abuso de
interfaces reducirá la productividad y la legibilidad.
Debemos usar el sentido común en base a nuestro
conocimiento del proyecto.