RE: [Python-es] Patrones de diseño

Toni Martínez python en ammsoft.com
Lun Ago 2 14:55:59 CEST 2004


Bueno esto empieza a estar muy claro.
El ejemplo con el "Abstract Factory" no sólo me ha hecho entender, creo,
todo el concepto sino que además me obliga a replantear todo el enfoque que
estaba llevando a cabo.

Después de mirar algunos ejemplos:
c++
http://www.dofactory.com/Patterns/Patterns.aspx#list

java
http://www.developer.com/java/other/article.php/626001

c#
http://www.c-sharpcorner.com/Language/AbstractFactoryPatternsinCSRVS.asp
http://www.codeproject.com/csharp/csdespat_1.asp

vb.net
http://www.c-sharpcorner.com/Code/2002/Feb/CreationalPattersAbstFactAJ.asp

python
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/86900
http://www.pasteur.fr/formation/infobio/python/ch18.html
(no se alemán pero puede que estén aquí)
http://www.datec.at/dp_cp_abstractfactory.html

otros:
http://c2.com/cgi/wiki?DesignPatternsBook


Y leer por encima !!!!! (Demasiada información para analizar en poco tiempo)
http://www.aleax.it/Python/5ep.html


Pensando en voz alta:
Ya hay una lista básica de patrones con una nomenclatura establecida. (S/N)
Dado que solucionan problemas muy comunes, convendría tenerlos implementados
en Python (S/N)
Teniendo en cuenta que cada uno tiene problemas diferentes esta
implementación sería mediante unas clases muy sencillas que sirven de
esquema y base a las clases definitivas, que cada uno debe currarse. (S/N)

En cualquier caso está muy claro que hay que ponerse manos a la obra, ya que
puede ser una de las herramientas más imprescindibles para sacarle jugo a
python.
Cómo nos organizamos?
No creo que haya que inventar nada, analicemos los desarrollos en c++, java
o c# y adaptémolos a Python.

Visto lo que he llegado a entender los patrones pueden convertirse en mi
mejor aliado, tanto a la hora de reutilizar código, mantenerlo y
documentarlo, o NO?

> -----Mensaje original-----
> De: python-es-bounces en aditel.org [mailto:python-es-bounces en aditel.org]En
> nombre de David Villa
> Enviado el: lunes, 02 de agosto de 2004 12:55
> Para: La lista de python en castellano
> Asunto: RE: [Python-es] Patrones de diseño
>
>
> Hola:
>
> De manera informal podemos decir que un patrón de diseño es:
>
>   "Una buena solución para un problema frecuente"
>
> El patrón describe, normalmente con ayuda de diagramas de clases y de
> secuencia, como solucionar un tipo concreto de problema que suele
> aparecer con frecuencia en el DISEÑO de sistemas. El patrón es siempre
> una herramienta de DISEÑO y por tanto aparece en el diagrama de clases
> Pongo como ejemplo el patrón "Abstract Factory" sacado de [1]:
>
> Problema a resolver:
>   Conseguir una interfaz para creación de objetos dependientes o
> relacionados sin especificar sus clases concretas.
>
> Motivación:
>   El ejemplo típico es crear un programa que puede utilizar (de forma
> excluyente) dos o más librerías de widgets diferentes. Imagina que
> tienes que hacer un programa que debe poder "renderizar" su GUI con QT o
> GTK y elegirá entre una u otra librería dependiendo de lo que encuentre
> en el sistema. Intenta pensar como harías esto sin replicar todo el
> programa, claro.
>
>   Pues el patrón "Abstract Factory" te da una solución (una buena
> solución) a este problema (y a otros parecidos), hay muchas soluciones
> peores y puede que alguna mejor.
>
>  Aplicando este patrón a este ejemplo, puedes añadir más tarde soporte
> para una nueva librería de widgets sin tener que tocar nada del código
> de la aplicación.
>
> Los patrones tienen muchas ventajas:
>
> - Ante un problema habitual, no tienes que pensar una solución ah hoc.
> Simplemente aplica el patrón adecuado.
> - Cuando usas un patrón estás seguro de que tu implementación tiene un
> buen nivel de calidad, sabes que no es una chapuza porque hay unos gurus
> que saben un huevo y dicen que esa es una solución estupenda para tu
> problema
> - Los patrones te dan vocabulario. Le puedes decir a otro colega que
> trabaja contigo en un proyecto: "La creación de las herramientas la he
> hecho con un 'Factory Method' que obtiene la descripción a través de un
> 'Singleton' que accede a la BD con un 'Facade'". En una frase le has
> contado todo el diseño, algo que sin patrones te podría llevar mucho más
> tiempo.
> - Más ventajas que no voy a contar porque "pa esto" me pongo a escribir
> un libro :-)
>
> Saludos
>
> PD: Aconsejo muy encarecidamente a todos los interesados en el tema de
> los patrones de diseño, el libro de "The Gang of Four" [1]. Es una
> verdadera maravilla, después de leerlo cambiarás tu manera de programar,
> garantizado.
>
> [1] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.
> "Design Patterns". Addison-Wesley, 1994
>
>
> El lun, 02-08-2004 a las 11:27, Toni Martínez escribió:
> > Bueno, al final habéis conseguido que para estas vacaciones me
> lea, entre
> > otras cosas, el Thinking in Python.
> >
> > En el tema patrones estoy muy muy verde, por no decir blanco,
> trasparente.
> > Lo poco que he leído sobre el tema sólo ha conseguido despistarme más.
> > Supongo que es el tipo de esquema mental que utilizo ;)
> >
> > Ya se que es abusar pero me podéis explicar con un ejemplo
> básico, de que me
> > servirían los patrones de diseño en una aplicación normal de gestión.
> >
> > Un saludo
> >
> > > -----Mensaje original-----
> > > De: python-es-bounces en aditel.org
> [mailto:python-es-bounces en aditel.org]En
> > > nombre de Chema Cortés
> > > Enviado el: lunes, 02 de agosto de 2004 11:23
> > > Para: La lista de python en castellano
> > > Asunto: Re: [Python-es] Patrones de diseño
> > >
> > >
> > > -----BEGIN PGP SIGNED MESSAGE-----
> > > Hash: SHA1
> > >
> > > On Monday 02 August 2004 12:14, Santi Camps wrote:
> > >
> > > > Vale, vale.  Yo es que lo primero que me leí después de el python
> > > > tutorial fué el "Thinking in Python" de Bruce Eckel (el autor del
> > > > famosísimo "Thinking in Java").  Está a medias e incompleto, pero de
> > > > algo sirve, e incluye algunos trocitos de código de ejemplo de cada
> > > > patrón.  Si te sirve de algo:
> > > > http://jamesthornton.com/eckel/TIPython/html/Index.htm
> > >
> > > Sería lo más próximo a lo que busco, aunque los ejemplos han
> quedado algo
> > > anticuados en relación a lo que se puede hacer ahora en python.
> > >
> > > De todos modos me estoy dando cuenta de las implementaciones tan
> > > diferentes
> > > que pueden haber de una idea bastante simple.
> > > -----BEGIN PGP SIGNATURE-----
> > > Version: GnuPG v1.2.2 (GNU/Linux)
> > >
> > > iD8DBQFBDggPHLTQrABk8H0RAoOUAJsFLCeMBfvlh/n1kN4hnDRH14E6bACdG4/M
> > > yHuVSLTx3568EmNUNiOf06Q=
> > > =IWq9
> > > -----END PGP SIGNATURE-----
> > > _______________________________________________
> > > Python-es mailing list
> > > Python-es en aditel.org
> > > http://listas.aditel.org/listinfo/python-es
> > >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo/python-es
> >
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>




Más información sobre la lista de distribución Python-es