Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Kilder til patterns Alle med kredibilitet/legimitet GRASP (9 patterns) GoF (23 patterns) Craig Larman ”Applying UML og Patterns”
Beskrivelser Patterns må beskrives etter en mal Beskrivelsene inneholder ofte UML Minstekrav (klikk)klikk GoF form (klikk)klikk
Arkitektur og mønstre Arkitektur realiseres med mønstre Hvert problem kan ha sitt eget mønster Noen mønstre brukes mange steder i en og samme arkitektur Andre mønstre brukes kanskje bare en gang Bruk av mønstre gir enklere vedlikehold Mønsteret gjør det lett å kjenne seg igjen
System og subsystem Et system kan bestå av flere subsystemer Hvert subsystem har egen arkitektur og mønstre
Mekanismer Mekanismer er mønstre for samarbeid mellom klasser MVC har for eksempel en trelags mekanisme MVC kan vises i et samarbeidsdiagram med tre objekter:
Andre lagdelte design Forretningssystemer er 3-lags eller n-lags Lagene kan være fordelt på ulike noder Et system er for stort til å kalles en mekanisme
Rammeverk Rammeverk er betydelig større enn mekanismer Rammeverk er samarbeid mellom pakkersamarbeid Rammeverk har callbackteknologi Klassebiblioteker lar applikasjonen bruke instanser Rammeverk bruker i tillegg applikasjonens instanser
Applikasjonens instanser Figuren viser bruk av applikasjonens instanser i to av rammeverkets mekanismer
GRASP General Responsibility Assignment Software Patterns GRASP er prinsipper for god OO design GRASP beskriver i den forbindelsen 9 mønstre GRASP gir innsikt i klassisk design
GRASP og high cohesion High cohesion betyr høy sammenheng Uttrykket brukes om en klasses ansvar Klassens operasjoner skal dekke ansvar med høy grad av sammenheng Dette gir objekter med enkle tilstander og enkel api Enkle tilstander og enkel api gir lav risiko
GRASP General Responsibility Assignment SP GRASP er et hjelpemiddel for å lære om OD GRASP er retningslinjer for å fordele og tildele ansvar mellom klasser GRASP fører til sunne, enkle systemer med lav teknologisk risiko
High Cohesion Metoder med en oppgave Objekter med få og enkle tilstander Klasser med høy konsentrasjon om ett ansvarsområde Applikasjonslag med konsentrasjon om ett område Bidrar til enkel API Høy grad av abstraksjon og enkel gjenbruk Bidrar til lav kobling
Low coupling Kobling vises som assosiasjoner mellom klasser Lav kobling vises som få assosiasjoner
Controller og indirection Controller oversetter brukerimpulser til systemoperasjoner Indirection unngår direkte kobling mellom behov og tilbyder. Se JDBCtrainer java[13] Se
Creator Gir råd om hvem som kan lage instanser Er i slekt med LoD (Law of Demeter) A kan konstruere B dersom A aggregerer, inneholder eller bruker instanser av B A kan konstruere B dersom A har nødvendig informasjon for konstruksjonen av B
Law of Demeter En metode skal ha begrenset kunnskap om en objektmodell Et objekts metode kan sende meldinger til seg selv Et objekts metode kan sende meldinger til sine parametre Et objekts metode kan sende meldinger til objekter det selv instansierer
Meldinger fra et objekt Et objekt kan sende meldinger til seg selv Et objekt kan sende meldinger til sine parametre Et objekt kan sende meldinger til objekter det selv instansierer Et objekt kan sende meldinger til sine egne komponentobjekter
Praktiske følger av LoD Et objekt kan instansiere assosierte objekter i private metoder Et objekt kan sende meldinger til andre objekter i private metoder ”A public method M of Class C shold invoke only its own public and private methods, and those of its superclasses” Annen praksis øker den teknologiske risikoen
Praktisk problem og LoD Snakk bare med de nærmeste
Praktisk design med LoD La en venn ordne problemet
Generelt kart over LoD Klassen Ansvar har bare noen få nære Venn-er
Information Expert Tildeling av ansvar til den som har den relevante informasjonen Hvem tar ansvaret for å oppdage vinnermønsteret?
Praktisk bruk av Information Expert Spillebrett samler inn kunnskap fra sine ”venner” og tar ansvaret Salg samler inn kunnskap fra sine venner for å rapportere endelig pris
Layers, 3-tier GRASP Forretningssystemer er lagdelte
Layers, n-tier Systemets størrelse krever av og til flere lag Klikk for detaljerKlikk
Praktisk lagdeling Figuren viser en lagdeling av et kinosystem