[pyar] Problema de patrones/diseño
Andrés Gattinoni
andresgattinoni en gmail.com
Mie Ene 12 18:33:00 ART 2011
2011/1/12 Roberto Alsina <ralsina en netmanagers.com.ar>:
> Dijo Andrés Gattinoni:
>
> Problema: tengo una clase madre (Backend) y una serie de clases hijas
> que implementan distintos backends concretos. La clase Backend define
> la interfaz pública de un backend y las hijas hacen lo necesario para
> cada tipo de backend para llevar a cabo la operación correspondiente.
> Hasta ahí ningún problema. El tema es que hay ciertas operaciones
> comunes (por ejemplo, validaciones de tipos de datos) que yo quisiera
> hacer en todos los métodos públicos, pero no quiero repetir código.
> Cuál es la mejor forma de hacerlo?
>
> Y yo digo...
>
> Porque no descomponés la función en una parte que se reimplementa "adentro"
> y una parte que no se reimplementa "afuera"?
>
> Por ejemplo, algo así:
>
> class madre(object):
> def metodo_importante(self, args):
> # hacemos las cosas que siempre hay que hacer
> self.validar_args(args)
> self.pasear_perro()
>
> #Y ahora hacemos las cosas que pueden cambiar
> self.hacer_trabajo(args)
>
> def hacer_trabajo(self,args):
> log.error("Te olvidaste de reimplementar hacer_trabajo")
>
> Y obviamente:
>
> class hija(madre):
> def hacer_trabajo(self, args):
> self.picar_piedra(args[0])
>
> # etc.
Bueno, era básicamente lo que estaba haciendo... con la diferencia de
que en mi caso se llama "_hacer_trabajo", digamos.
Y, sin saberlo, creo que también es la implementación del patrón
plantilla (aunque el método "_hacer_trabajo" no es verdaderamente
abstracto).
More information about the pyar
mailing list