8
Strategy Pattern Beslektede algoritmer

Strategy Pattern

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

Page 1: Strategy Pattern

Strategy PatternBeslektede algoritmer

Page 2: Strategy Pattern

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

Page 3: Strategy Pattern

PrinsippskisseKlienten skal

utføre ulike service-operasjoner

Klienten har aggregert eller komponert et strategiobjekt som vet hvordan

Page 4: Strategy Pattern

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

Page 5: Strategy Pattern

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

Page 6: Strategy Pattern

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

Page 7: Strategy Pattern

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

Page 8: Strategy Pattern

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