1 / 7

Template Method

Template Method. Variasjoner i subklasser. Prinsippskisse. Prinsippskissen er meget enkel En abstrakt klasse har en konkret metode og en abstrakt metode Hver subklasse realiserer den abstrakte metoden på hver sin måte. Algoritmer med variasjoner.

johnda
Download Presentation

Template Method

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TemplateMethod Variasjoner i subklasser

  2. Prinsippskisse • Prinsippskissen er meget enkel • En abstrakt klasse har en konkret metode og en abstrakt metode • Hver subklasse realiserer den abstrakte metoden på hver sin måte

  3. Algoritmer med variasjoner • En algoritme kan skrives ferdig med alle metodekall • Men ett eller flere metodekall kan være abstrakte • Abstrakte metoder gjøres ferdige i subklasser • Et eksempel på dette er metoden read i Javas rammeverk

  4. Metoden read • Metoden read behandler IO svært forskjellig i ulike subklasser • Klassen InputStream definerer read abstrakt • Dermed kan InputStream definere to viktige metoder helt ferdig • read(byte[] b) • read(byte[] b, int off, int len) • Begge metodene kan utnytte array.length og indekser for å bygge den nødvendige løkken med kall til den abstrakte metoden read.

  5. Subklasser med read • ByteArrayInputStream(prosjekt 5 og 7) lar read lese fra en strøm basert på en Decorator. • FileInputStream konfigurer et objekt som leser direkte i et filsystem • FilterInputStream bruker en annen InputStream og transformerer dataene • SubklassenFilterInputStream kan for eksempel vedlikeholde linjenummer • AudioInputStream formaterer read-data som spesifiserte audioformater og bufferlengde

  6. Fast sekvens • TemplateMethod viser hvordan vi kan bruke samme algoritme for ulike typer • Mønsteret kan brukes når sekvensen i algoritmen ikke er avhengig av typen • To eksempler på TemplateMethod i prosjekter • Klassen ConfigModel bruker TemplateMethod i begge sine sekvenser (programkode 52) • Klassen Figuremodel i metoden newInstance (programkode 89) • Klassen Element med metodene isHot og traceResult? • Diskusjoner med utgangspunkt i mønstre øker kunnskap om kode og programdesign

  7. GoFapplicability list • Implementere faste deler av en algoritme en gang og la subklasser definere variasjonene • Unngå repetisjon av kode ved å refaktorere til generaliserte klasser. • Metodikken er å gjenfinne all lik kode i klasser med samme grunnleggende ansvar, og flytte den til en superklasse • Kontroll med subklassenes utvidelser ved å deklarere lovlige ”hooks” • (Som brukes i Eclipseplugin-teknologi, selvsagt ukjent for GoF i 1995)

More Related