Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertBørge Paulsen Endret for 9 år siden
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
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.