Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan.

Liknende presentasjoner


Presentasjon om: "Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan."— Utskrift av presentasjonen:

1 Beslektede algoritmer

2 Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan ikke inneholde kode for alle mulige varianter  I stedet lages det noen få kontraktmetoder i interface eller abstrakte klasser  Dermed kan en instans som kapsler inn en algoritme sendes som argument til klienten  Klienten bruker den innkapslede algoritmen uten å måtte kjenne den konkrete strategien

3 Prinsippskisse  Klienten skal utføre ulike service- operasjoner  Klienten har aggregert eller komponert et strategiobjekt som vet hvordan

4 Eksempelskisse  GoF bruker dette eksemplet på side 315  Det handler om ulike strategier for linjeskift  Composition implementerer ikke strategiene selv  Mønsteret minner derfor om Decorator  Forskjellen på mønstre er av og til bestemt av hensikten med mønsteret

5 Instans av strategy pattern  Prosjektet simpletransport bruker Strategy  Et eksempel med formatering vises på side 118  Spesialiseringer av DefaultTableCellRenderer gir ulike strategier  Installering av strategiobjektet forstås ved hjelp av MVC  Context er TableColumn komponert i TableColumnModel  Strategien installeres med meldingen setCellRenderer

6 setValue som kontraktmetode  Kontraktmetoden er definert i DefaultTableRenderer  Kontrakten er at domeneklassene kan overstyre metoden  Kontekstobjektet er altså en klasse i rammeverket  Domeneklassen Listpane er klient for kontekstobjektet  Kontekstobjektet tilhører MVC-gruppen i rammeverkets brukerkontroll  Det er altså rammeverkets brukerkontroll som bruker kontraktmetoden setValue

7 GoFs Applicability list  Flere klasser med lignende ansvar er kun forskjellig i oppførsel (behaviour)  Det er behov for ulike varianter av en algoritme som kan implementeres i et klassehierarki  Klientene kjenner ikke datasettene eller algoritmene som utnyttes i strategiobjektene  Klasser som definerer ulike algoritmer og forgreninger basert på switch- eller lister med if-else får høy kompleksitet og blir vanskelige å vedlikeholde. Flytt hver gren inn i hver sin strategiklasse i stedet

8 Referanser til prosjekter  simpletransport bruker Strategy for å formatere ulike lister. Se programkode 71 og 72.  Alle prosjektene bruker Strategi som layoutobjekter i paneler eller i spesialiseringer av Jframe, som nevnt blant annet i prosjekt 4, side 55.  easylib bruker Strategy i overføring av data mellom properties og XML, se side 96  simplediagram bruker Strategy for å fremstille sammensatte figurer basert på Graphics2D, interfacet Shape og metoden draw, se side 147


Laste ned ppt "Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan."

Liknende presentasjoner


Annonser fra Google