Patrones de diseño

Los patrones de diseño en programación ayudan a resolver problemas que se presentan muy a menudo en el desarrollo de un programa. Podemos referirnos a los patrones de diseño en base a :

1.- Nombre: usado para describir el patrón.

2.- Synopsis: nos da una breve descripción sobre los  problemas a los que se puede aplicar el  patrón.

3.- Solución: breve descripción de la solución.

Existen varios tipos de patrones de diseño, pero yo les voy  a mostrar unos cuantos que me parecieron muy importantes.

Adapter

Este patron se usa cuando se tienen dos objetos los cuales queremos que interactuen, pero ambos tienen interfaces distintas el uno al otro. Uno de nuestros objetos puede ser el cliente (quien recibe servicios) y el otro el servidor (quien presta servicios). Como tenemos metodos que pertenecen a la interfaz del cliente los cuales no son los mismos que los metodos que pertenecen a la interfaz del servidor y en nuestro programa queremos conservar ambas interfaces, necesitamos una manera de comunicar el servidor con el cliente. Esto se realiza por medio de un adaptador el cual permite que los metodos del objeto cliente puedan ser entendidos por el objeto servidor y la tarea que se le encargo a este ultimo se lleve a cabo.

La siguiente imagen sirve para ilustrar la manera en que se aplica este patron de diseño.

Iterator

Se usa cuando tenemos un objeto que contiene una colección de datos de un cliente, los cuales son guardados en estructuras de datos (arboles, listas enlazadas, vectores, etc) y el cliente quiere acceder a ellos sin preocuparse sobre como son guardados los datos. Por lo cual tenemos que proveer una interfaz que permita acceder a los datos de una manera amigable.

Imaginemos que el cliente quiere realizar un ciclo sobre los datos, como le hemos proveido una interfaz el cliente realiza un ciclo usando los componentes de la interfaz la cual a su vez realiza el trabajo de pasar los datos. De esa manera facilitamos la manipulación de los datos.

Composite

Trata con el problema de la creación de objetos complejos a partir de objetos mas simples, lo cual se soluciona usando una colección de elementos simples pero que puedan ser unidos entre ellos de varias maneras.

Un ejemplo muy conocido son las ventanas graficas de los programas, las cuales basicamente estan formadas por contenedores y componentes y agrupados de tal manera que se forma la ventana que se desea.

Flyweight

Cuando se tienen muchos objetos que tienen la misma información, se puede ahorrar espacio en memoria creando una clase que se encargue de manejar la información que es común a varios objetos y haciendo que esos objetos obtengan su información la un objeto de la clase anterior.

Model View Controller (MVC)

Es una manera de descomponer una aplicación en tres partes: el modelo, la visualización y el controlador. originalmente diseñado para la aplicación de una GUI. Se comporta de la siguiente forma.

Entrada –> Procesamiento –> Salida
Controlador –> Modelo –> Visualización

Este patrón es el que pienso usar, en donde la visualización es la ventana donde se ve el laberinto, las entradas son los datos que el robot pasa a el contenedor el cual modela a los muros y guarda sus posiciones y la del robot(s).

 

Bibliografía:

An Introduction to Object-Oriented Programming,(3rd Edition)
Timothy Budd

http://ootips.org/mvc-pattern.html

http://www.go4expert.com/forums/showthread.php?t=5127#prototype

About colli03

Soy estudiante de la carrera ingeníera en Mecatrónica en la UANL. Me gusta el rap, el rock y la musica clasica. Me gusta mucho leer libros de tecnologías y también ir a escalar cerros.
This entry was posted in Uncategorized. Bookmark the permalink.

2 Responses to Patrones de diseño

  1. colli03 says:

    creo que para la proxima hago mis tareas cuando me las encarguen.

  2. Elisa says:

    Aquí también falta la conexión a tu proyecto propio. Te pongo 4.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s