See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Abstract Factory (patrón de diseño) - Wikipedia, la enciclopedia libre

Abstract Factory (patrón de diseño)

De Wikipedia, la enciclopedia libre

Abstract Factory (Fábrica Abstracta) es un patrón de diseño para el desarrollo de software.

El problema que intenta solucionar este patrón es el de crear diferentes familias de objetos. Uno de los usos más comunes es el de creación de interfaces gráficas de distinto tipo (gtk, qt, etc.), para lo cual se suele combinar con los patrones Singleton y Adapter.

Imagen:AbstractFactory.png


La estructura típica del patrón Abstract Factory es la siguiente:

  • La definición de interfaces para la familia de productos genéricos (ej: ventana, menú, botón...)
  • Implementación de las interfaces de los productos para cada una de las distintas familias concretas (ej: gtk_ventana, gtk_menú, gtk_botón... y qt_ventana, qt_menú, qt_botón...)
  • La definición de los métodos de creación de los productos genéricos en la interfaz de la fábrica (ej: construir_ventana, construir_menú, construir_botón...) cuyo tipo de retorno serán las interfaces genéricas.
  • Implementación de una fábrica para cada una de las familias concretas (ej: fábrica_gtk, fábrica_qt).

El patrón Abstract Factory está aconsejado cuando se prevé la inclusión de nuevas familias de productos, pero puede resultar contraproducente cuando se añaden nuevos productos o cambian los existentes.

Cuando se usa en conjunción con Singleton se crea una única fábrica, de modo que no habrá usos inconsistentes de los productos en el programa


[editar] Implementación Python

class GUI_Factory:
    @staticmethod
    def getFactory(system):
        return {'GTK': GTK_Factory, 'QT': QT_Factory}[system]
 
    def createButton(self):
        raise NotImplementedError
 
class GTK_Factory(GUI_Factory):
    def createButton(self):
        return gtk.Button()
 
class QT_Factory(GUI_Factory):
    def createButton(self):
        return qt.Button()
 
factory = GUI_Factory.getFactory('GTK')()
button = factory.createButton()

[editar] Enlaces externos


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -