En kort innføring i Design Patterns Kilde: Craig Larman: Applying UML and Patterns Bendik Bygstad 3.12.02
Patterns (mønstre) Stammer fra arkitekturteori Christopher Alexander (1977): A Pattern Language En standard løsning på et standard problem – men på en slik måte at hver enkelt anvendelse blir ulik. Bendik Bygstad 3.12.02
Patterns Det er kjente måter å løse tilbakevendende problem på. De beskrives gjerne som Problem-Løsningspar og har kjent under bestemte navn. De beskriver fundamentale prinsipper for objektdesign og tildeling av ansvar, uttrykt som mønstre. Bendik Bygstad 3.12.02
Patterns Patterns gjør det mulig å samle og beskrive gode og velprøvde måter å designe OO-systemer på. Gjør det mulig for eksperter å kommunisere effektivt om OO-designproblemer. Diskusjonen foregår på et mer abstrakt / overordnet plan. Bendik Bygstad 3.12.02
Patterns - syntaks Navn Kontekst Problem Løsning (kjerne) Forhold til andre patterns - alle kan lage/publisere patterns…. Bendik Bygstad 3.12.02
GRASP patterns General Responsibility Assignment Software Patterns High Cohesion (Høy Sammenheng) Low Coupling (Lav Kobling) Information Expert (Informasjonsekspert) Creator (Skaper) Controller Bendik Bygstad 3.12.02
To andre patterns Layers (Lagdeling) Fasade Bendik Bygstad 3.12.02
Kohesjon og kobling Grunnleggende prinsipper i OO utvikling for å håndtere kompleksitet: Høyest mulig grad av kohesjon Lavest mulig grad av kobling Bendik Bygstad 3.12.02
Informasjonsekspert og Creator Informasjonsekspert: Tildeling av ansvar Tildel ansvar til informasjonseksperten – klassen som har den nødvendige informasjonen for å oppfylle ansvaret Creator: Opprette instanser av klasser A oppretter B dersom A aggregerer, inneholder eller bruker B-objekter, eller hvis A inneholder informasjon som er nødvendig for å opprette B. Bendik Bygstad 3.12.02
Kontroller Mottar innkommende hendelser Formidler mellom GUI-lag og domenelag Viktig i arkitekturen: Muliggjør flere typer grensesnitt uten for mye ombygging Typer: Use Case controller og system-kontroller Bendik Bygstad 3.12.02
Fasade Inngang til pakke (av flere klasser) Samme rolle som kontroller, inne i pakken Innkapsler pakken Bendik Bygstad 3.12.02
Lagdeling Tre lag: Presentasjon – Domene – Lagring Seks lag (Layers-pattern’et): Presentasjon (GUI) Applikasjon (sesjoner, kontrollere) Domene (domeneklasser, fasader) Forretnings-infrastruktur (f.eks valuta-konvertering) Tekniske tjenester (persistens, sikkerhet) Fundament (Databaser, filer) Avhengigheter: Nedover i lagene (ikke omvendt) Bendik Bygstad 3.12.02
Lagdeling Presentasjon Applikasjon Domene Forr.infrastr. Tekniske Tjenester Fundament GUI 1 GUI 2 Kontroller Faktura Kunde Vare Valutakonv. Les/skriv DB 1 DB 2 Bendik Bygstad 3.12.02