Upload
lunea-mayo
View
32
Download
3
Embed Size (px)
DESCRIPTION
Strategy Pattern. Beslektede algoritmer. 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 - PowerPoint PPT Presentation
Citation preview
Strategy PatternBeslektede algoritmer
Isolere klient fra algoritmeKlienter trenger av og til helt forskjellige
måter å gjøre det samme påMen klienten selv kan ikke inneholde kode
for alle mulige varianterI stedet lages det noen få kontraktmetoder i
interface eller abstrakte klasserDermed kan en instans som kapsler inn en
algoritme sendes som argument til klientenKlienten bruker den innkapslede algoritmen
uten å måtte kjenne den konkrete strategien
PrinsippskisseKlienten skal
utføre ulike service-operasjoner
Klienten har aggregert eller komponert et strategiobjekt som vet hvordan
EksempelskisseGoF bruker dette
eksemplet på side 315Det handler om ulike
strategier for linjeskiftComposition
implementerer ikke strategiene selv
Mønsteret minner derfor om Decorator
Forskjellen på mønstre er av og til bestemt av hensikten med mønsteret
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
setValue som kontraktmetodeKontraktmetoden er definert i
DefaultTableRendererKontrakten er at domeneklassene kan overstyre
metodenKontekstobjektet er altså en klasse i rammeverketDomeneklassen Listpane er klient for
kontekstobjektetKontekstobjektet tilhører MVC-gruppen i
rammeverkets brukerkontrollDet er altså rammeverkets brukerkontroll som
bruker kontraktmetoden setValue
GoFs Applicability listFlere 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 klassehierarkiKlientene kjenner ikke datasettene eller
algoritmene som utnyttes i strategiobjekteneKlasser 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
Referanser til prosjektersimpletransport 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