Hola bienvenido a mi serie de post que he llamado "Patrón de diseño en 10 minutos", hoy comienzo por el patrón Decorator.
La idea de estos post no es dar tanto ejemplo en código si no explicarlo en el lenguaje humano lo más claro posible, pues así quedan más claros los conceptos. Si no resulta me comprometo a poner ejemplos - así les obligo a dejar comentarios.
Vamos, antes les debo recordar que en general se usan interfaces, clases abstractas y métodos abstractos para determinar los comportamientos de los objetos.
Es un poco dificil de entender esto de comportamiento en los objetos, pues mucha gente simplemente agrupa una serie de métodos desde sus "librerías"; espero ayudar a que quede claro que el camino de la orientación a objetos va por otro lado.
Patrón decorador:
Supone que vas a un hotel, cada noche de hotel en habitación compartida tiene un precio base de 100$.
A mitad de la noche se te ocurre bajar a la piscina y la entrada vale $5.
Luego de la piscina pides comida (en tu habitación), esta comida tiene un precio de $10.
¿Cuanto sería el total? , sería un poco dificil de obtener datos al tener una array o alguna estructura de todos los objetos pues estos objetos son de distintas clases y prbablemente de distintos métodos.
Cual es la solución, pues el patrón decorador, simplemente cada cosa nueva que pides tiene un atributo que es un objeto del precio base que se va actualizando y cuando creas el objeto "adicional" simplemente le vas pasando ese objeto, de esta forma para obtener la cuenta la obtienes desde el último objeto "adicional" creado.
Algo así como (en pseudo código):
cuenta = new Habitacion(); // existe el método costo que devuelve 100.
cuenta = new TicketPiscina(cuenta); //existe el método costo que devuelve this.cuenta.getCosto() + this.costo() o sea 100 + 5
cuenta = new ComidaHabitacion(cuenta); //existe el método costo que devuelve this.cuenta.getCosto() + this.costo() o sea 105 + 10
Y para obtener el precio sería simplemente : precio = cuenta.costo();
Vamos, ¿se entiende?
Saludos!
lunes 23 de abril de 2007
sábado 21 de abril de 2007
¿Para qué trabajo?
Ayer conversando me dí cuenta lo fácil que es para mi a veces cometer el error de pensar en el trabajo como mi actividad principal. Pues el trabajo no es mi actividad principal, a pesar de que ahora trabajo desde las 7:30 hasta las 16:00 y luego voy a clases del Master hasta las 21:00; todo mi día es acerca de Software.
Parece ser la desgracia de trabajar en lo que te gusta...
Mi actividad principal es aprender y compartir mi vida con mi mujer,así aprendo de muchas cosas, aprendo a ser mejor, a escuchar, observo y repaso en mi cabeza mis errores.
Simplemente, tenemos el derecho de haber cometido errores y hay que aprender de ellos para que no se vuelvan a repetir. Sin duda alguna he cometido errores por pensar que mi actividad principal es el trabajo - mi desarrollo profesional.
Ahora que estoy terminando mi meta de tener un master estoy buscando nuevos desafíos, esta vez con las cosas claras de saber cual es mi actividad principal.
En el siguiente post si que hablo de software!.
Parece ser la desgracia de trabajar en lo que te gusta...
Mi actividad principal es aprender y compartir mi vida con mi mujer,así aprendo de muchas cosas, aprendo a ser mejor, a escuchar, observo y repaso en mi cabeza mis errores.
Simplemente, tenemos el derecho de haber cometido errores y hay que aprender de ellos para que no se vuelvan a repetir. Sin duda alguna he cometido errores por pensar que mi actividad principal es el trabajo - mi desarrollo profesional.
Ahora que estoy terminando mi meta de tener un master estoy buscando nuevos desafíos, esta vez con las cosas claras de saber cual es mi actividad principal.
En el siguiente post si que hablo de software!.
viernes 20 de abril de 2007
Suscribirse a:
Entradas (Atom)
