Variasjoner i subklasser
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
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
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.
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 Subklassen FilterInputStream kan for eksempel vedlikeholde linjenummer AudioInputStream formaterer read-data som spesifiserte audioformater og bufferlengde
Template Method 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å Template Method i prosjekter Klassen ConfigModel bruker Template Method 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
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 Eclipse plugin-teknologi, selvsagt ukjent for GoF i 1995)