domingo, 9 de septiembre de 2007

Patrones. Pocos y de pasadita

Los patrones son soluciones a problemas comunes que podemos encontrar de manera documentada, son las mejores practicas y soluciones a varios problemas que te puedes encontrar en el día a día del desarrollo. Generalmente estos patrones favorecen los objetivos de orientación a objetos y facilitan el trabajo. Existen cientos de ellos, aquí solamente vamos a exponer una introducción a algunos de ellos.

  • Singleton. El singleton es una clase de la que solamente queremos crear una sola instancia, podemos pensar por ejemplo en una clase Presidente de Empresa, de estos solamente debería haber uno por Empresa.
  • Listener. Un listener es una clase que esta atenta a los cambios en alguna instancia de otra clase, podemos pensar en que la clase que reporta los cambios envia avisos a todas las clases interesadas, y estas hacen alguna acción en base a estas notificaciones, de manera similar a alertas sobre eventos.
  • Decorator. Una clase de determinado tipo "envuelve" a otra clase del mismo tipo para poder hacer nuevas funcionalidades que pueden ser eco de las de la clase decorada. Los decoradores sirven en muchos casos para crear objetos "con"por ejemplo Cafe con Leche o Leche con Chocolate, o quizas Cafe con Leche con Chocolate.
  • Delegate. Es una clase de dependencia en la que una clase expone cierta funcionalidad que es realizada por alguna otra clase o instancia, de manera que el usuario final solo accede a una clase de salida.
  • Façade. Los objetos de varias clases se agrupan dentro de una nueva que expone la funcionalidad de todas las clases del grupo dentro de si mismo. Podemos compararlo de manera directa con un control remoto universal, que incluye las funciones de varios controles.
  • Factory. Una clase de objetos que son dificiles de configurar se mantienen con constructores de paquete, mientras que una clase de ese mismo paquete permite crear las instancias de los mismos sin pasar por todos los problemas de configuración.
  • Interceptor. Una clase funciona como un envoltorio de otra, cada que la claseenvuelta va a realizar una operación le notifica a la primera para que esta pueda cambiar partes del proceso que realiza.
  • Iterator. Una clase permite recorrer los elementos de una colección.
  • Abstract Factory. Similar a Factory, pero en este caso se define una clase abstracta que creara los objetos, y es en la implementación concreta donde dichos objetos se crean.
  • Strategy. Una clase abstracta define los pasos de un proceso, y el orden que seguiran, pero son las clases concretas quienes determinan la forma exacta en que el proceso se realiza, generalmente implementando partes del proceso.

No hay comentarios: