Web Analytics

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

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Ontwerppatroon - Wikipedia

Ontwerppatroon

Een ontwerppatroon of patroon (en: design pattern) in de informatica is een generiek opgezette softwarestructuur, die een bepaald veelvoorkomend type software-ontwerpprobleem oplost. Het patroon geeft geen concrete oplossing, maar biedt een soort template, waarmee het ontwerpprobleem kan worden aangepakt. In de wereld van het objectgeorienteerd programmeren zal een ontwerppatroon er uitzien als een klassendiagram, waar de relatie tussen de verschillende klassen en objecten weergegeven wordt. Een ontwerppatroon is geen algoritme, omdat een algoritme een berekeningsprobleem oplost en geen ontwerpprobleem.

Inhoud

[bewerk] Geschiedenis

De term 'design pattern' werd in 1977 geïntroduceerd door Christopher Alexander, emeritus-hoogleraar aan de University of California. Hij deed dat in het boek A Pattern Language: Towns, Buildings, Construction en beschreef daarin een ontwerpmethode voor architecten en stedenbouwkundigen. In 1995 namen Erich Gamma, Richard Helm, Ralph Johnson en John Vlissides, ook bekend als de Bende van Vier (en: The Gang of Four), dit concept over en pasten het toe in de softwareontwikkeling. Zij deden dat met het boek 'Design patterns: Elements of Reusable Object-Oriented Software'. Wat een ontwerppatroon nu precies is bleef 10 jaar lang een onderwerp van discussie.

[bewerk] Gebruik

Het gebruiken van patronen versnelt het maken van bijvoorbeeld software, omdat beschikbare oplossingen direct kunnen worden hergebruikt. Hoewel oplossingen voor veelvoorkomende ontwerpproblemen bestaan, is het vaak lastig om deze toe te passen in andere situaties vanwege de details in de implementatie. Patronen zijn een generieke beschrijving die het voordeel bieden dat het oplossingspatroon herkenbaar is, ongeacht de implementatiedetails.

[bewerk] Beschrijving

Er zijn in de literatuur veel verzamelingen van patronen verschenen. Daarbij is normaal geworden per patroon een beschrijving te geven waarin een aantal standaard onderdelen voorkomen. Als voorbeeld noemen we de "normale" onderdelen van softwarepatronen:

Patroonnaam en Indeling
Ieder patroon hoort voorzien te zijn van een unieke en beschrijvende naam waarmee het patroon geïdentificeerd wordt en waarnaar verwezen kan worden. Daarbij moet het patroon ook ingedeeld worden naar soort (zoals verderop beschreven) om het patroon nog makkelijk terug te kunnen vinden.
Doel
Een beschrijving van het doel van het patroon, het soort probleem dat het patroon oplost.
Ook bekend als
Eventueel andere namen voor hetzelfde patroon in de literatuur.
Motivering
Een probleembeschrijving met context waarop het patroon van toepassing is. Geeft een voorbeeld van wanneer men het patroon toe zou passen.
Toepasbaarheid
Geeft een algemeen idee over de situaties (de contexten) waarin het patroon van toepassing is.
Structuur
Een grafische weergave van de structuur van het patroon, bijvoorbeeld met behulp van klassendiagrammen en interactiediagrammen.
Rollen
Een opsomming van de klassen/objecten in het patroon en hun rol in het patroon.
Collaboraties
Beschrijft de interacties tussen de klassen en objecten in het patroon.
Gevolgen
Beschrijft de resultaten, neveneffecten en overwegingen die op gebruik van het patroon van toepassing zijn.
Implementatie
Beschrijft de implementatie van het patroon, met een bespreking van de technieken die daarvoor gebruikt worden.
Voorbeeldcode
Een voorbeeld van een implementatie van het patroon in een programmeertaal.
Bekende toepassingen
Voorbeelden van bekende situaties waarin het patroon toegepast is.
Gerelateerde patronen
Beschrijft patronen die verband houden met het huidige patroon en wat het verband is (bijvoorbeeld kan gebruikt worden in plaats van of kan samen gebruikt worden met). Beschrijft ook de verschillen met gelijkende patronen.

[bewerk] Voorbeelden van ontwerppatronen uit de informatica

Hieronder volgt een opsomming van een aantal patronen, ingedeeld naar categorie.

[bewerk] Fundamentele patronen

Patronen die het fundament vormen van object-georiënteerd ontwerp.

  • Delegatie
  • Functioneel Ontwerp
  • Interface
  • Proxy
  • Immutabiliteit
  • Vlaginterface

[bewerk] Creatie

Patronen aangaande mechanismes om in programma's objecten aan te maken.

  • Abstract Factory — Laat een object maken waarvan slechts de basisklasse bekend hoeft te zijn.
  • Builder — Lijkt op een Abstract Factory, maar levert andere producten dan objecten.
  • Factory method — Een basisklasse laat het maken van geaggregeerde objecten over aan een subklasse.
  • Prototype — Het maken van objecten door objecten te kopieren.
  • Singleton — Een klasse heeft slechts één instantie.

[bewerk] Structuur

Patronen die de structuur van een programma moeten verbeteren, complexiteit tegen moeten gaan en programma's inzichtelijker moeten maken.

[bewerk] Gedrag

Patronen waarin een bepaald gedrag vastligt dat vaak voorkomt in programma's.

  • Chain of responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template method
  • Visitor

[bewerk] Parallellisme

Patronen die vaak voorkomen in multiprogramma's.

  • Action at a distance pattern
  • Active Object
  • Balking pattern
  • Double checked locking pattern
  • Guarded suspension
  • Half-Sync/Half-Async pattern
  • Leaders/followers pattern
  • Monitor Object
  • Read write lock pattern
  • Scheduler pattern
  • Thread pool pattern
  • Thread-Specific Storage

[bewerk] Zie ook

Antipatroon

==Bronnen==
Bron(nen):
  • Design Patterns : elements of reusable object-oriented software
    Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
    Addison-Wesley professional computing series
    ISBN 0-201-63361-2

Daarnaast worden er, door anderen, nog de volgende groepen van patronen beschreven.

  • Gebeurtenispatronen (Eng: Event handling patterns)
  • Architectuurpatronen (Eng: Architectural patterns)
 

Static Wikipedia (no images)

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 -

Static Wikipedia 2007 (no images)

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 -

Static Wikipedia 2006 (no images)

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 - 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

Static Wikipedia February 2008 (no images)

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