17 mayo 2010

Abierto-Cerrado

Principio Abierto-Cerrado (The Open-Closed Principle, OCP).

"Clases deberían estar abiertas para extensión, pero cerradas para modificación"

La meta es permitir que nuestras clases sean fácilmente extendibles para incorporar nuevo comportamiento sin modificar el código existente, esto lo logramos cuando nuestros diseños son capaces de adaptarse al cambio y son lo suficientemente flexibles para añadir nueva funcionalidad sin permitir modificar el código existente.

Una vez que se tiene una clase que trabaja correctamente y esta siendo usada, en realidad no se desea hacer cambios a esta clase, pero hay que recordar que el Cambio es una gran constante en el desarrollo de software, con el principio OCP permitimos el cambio a través de la extensión, en lugar que modificar nuestro código existente. Subclases pueden agregar y extender el comportamiento de nuestra clase base, sin modificar el comportamiento que actualmente esta funcionando de nuestra clase base, no siempre este principio aplica solo a la herencia, si tu tienes varios métodos privados en una clase, estos estarán cerrados para la modificación, no permitiendo que otro código los altere, sin embargo se pueden declarar métodos públicos que invoquen esos métodos privados en diferentes formas, así estaremos extendiendo el comportamiento de esos métodos privados sin cambiar estos, este sería otro ejemplo de este principio.

Mientras este principio pareciese ser una contradicción hay técnicas para permitir que nuestro código sea extendido sin modificarlo directamente, hay que tener mucho cuidado al escoger las áreas del código que necesita ser extendido, aplicar el principio Abierto-Cerrado en cualquier lugar puede ser innecesario y puede provocar código complejo y difícil de entender.

No hay comentarios:

Publicar un comentario