martes, 1 de noviembre de 2011

Patrón de diseño.

Los patrones de diseño son soluciones que ya han sido antes utilizadas para muchas otras cosas y se ha demostrado que realmente funcionan.

El patrón de diseño que yo vi y se acopla a lo que estoy elaborando es el patrón Strategy

Este patrón declara una interfaz en común para los algoritmos que se presenten. Es decir, mi interfaz será el bosque que tengo como escenario, donde se encuentra mi monito, los fierros que recogerá y algunos obstáculos que tendrá.

Este pedazo de código llama a mi escenario (que es la interfaz común)

fondo= pygame.image.load("escenario.png")

Este otro contiene a mi monito (que es uno de los que realizarán los algoritmos)


monito= pygame.image.load("monito1.png")


Estas son las acciones que realiza mi monito:

                    if event.key == pygame.K_LEFT:
                        monito.move_ip(-10,0)
                    if event.key == pygame.K_RIGHT:
                        monito.move_ip(10,0)
                    if event.key == pygame.K_UP:
                        monito.move_ip(0,-10)
                    if event.key == pygame.K_DOWN:
                        monito.move_ip(0,10)


Los algoritmos, vienen siendo todas las acciones que logra hacer mi monito, como moverse a la izquierda, a la derecha, abajo, y hacia arriba.


Este código nos muestra el patrón Strategy en el lenguaje de programación Python.

class StrategyExample :

    def __init__(self, func=None) :
        if func :
             self.execute = func

    def execute(self) :
        print "Original execution"

def executeReplacement1() :
        print "Strategy 1"

def executeReplacement2() :
         print "Strategy 2"
if __name__ == "__main__" :

    strat0 = StrategyExample()
    strat1 = StrategyExample(executeReplacement1)
    strat2 = StrategyExample(executeReplacement2)

    strat0.execute()
    strat1.execute()
    strat2.execute()


A continuación un diagrama del esquleto del patrón de diseño "Strategy" (No me pertenece)




Fuentes: http://www.ingenierosoftware.com/analisisydiseno/patrones-diseno.php
http://lobyte.blogspot.com/2011/01/patron-estrategia.html

http://stackoverflow.com/questions/963965/how-is-this-strategy-pattern-written-in-python-the-sample-in-wikipedia

1 comentario:

  1. Está bien la explicación, pero no me queda claro si implementaste o cómo implementaste el patrón.

    Calificación: 3.75/5

    ResponderEliminar