Java Academy · Les

Template Method: algoritmeskeletten definiëren

Definieer het skelet van een algoritme in een basisklasse en laat subklassen de stappen invullen.

Les 4 van 414 stappen

Template Method: algoritmeskeletten definiëren is een gratis Java Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 4 lessen.

De bedoeling van de sjabloonmethode

De sjabloonmethode definieert het raamwerk van een algoritme in een basisklasse en stelt sommige stappen uit tot subklassen. Subklassen kunnen stappen overschrijven zonder de algemene structuur te wijzigen.

De abstracte basisklasse

De basisklasse bevat de sjabloonmethode, meestal final, die de stappen coördineert. Abstracte methoden vertegenwoordigen de variërende stappen. Concrete methoden bieden standaardgedrag.

public abstract class DataProcessor {
    // Template method — final, defines the algorithm
    public final void process() {
        readData();
        processData();
        writeResult();
    }
    protected abstract void readData();
    protected abstract void processData();
    protected void writeResult() {
        System.out.println("Result written (default)");
    }
}

Concrete subklassen

Elke subklasse vult de abstracte stappen in. De volgorde van de sjabloonmethode verandert nooit — alleen de implementatie van afzonderlijke stappen varieert.

public class CSVProcessor extends DataProcessor {
    protected void readData()    { System.out.println("Reading CSV..."); }
    protected void processData() { System.out.println("Parsing CSV rows..."); }
}
public class XMLProcessor extends DataProcessor {
    protected void readData()    { System.out.println("Reading XML..."); }
    protected void processData() { System.out.println("Parsing XML nodes..."); }
    @Override
    protected void writeResult() { System.out.println("Writing XML result."); }
}

Haakmethoden

Een haakmethode is een optionele stap met een standaardimplementatie, die vaak leeg is. Subklassen kunnen haakmethoden overschrijven om optioneel gedrag toe te voegen zonder dat ze dit verplicht moeten implementeren.

public abstract class Game {
    public final void play() {
        initialize();
        while (!isDone()) takeTurn();
        printWinner();
    }
    protected void initialize() {}  // hook — optional override
    protected abstract boolean isDone();
    protected abstract void takeTurn();
    protected abstract void printWinner();
}

Sjabloonmethode versus strategie

De sjabloonmethode gebruikt overerving: het raamwerk ligt vast in de basisklasse en stappen worden in subklassen overschreven. De strategie gebruikt compositie: het volledige algoritme staat buiten de klasse. Strategie is flexibeler; de sjabloonmethode is eenvoudiger wanneer stappen veel context delen.

Java InputStream als sjabloonmethode

read(byte[], int, int) van java.io.InputStream wordt geïmplementeerd op basis van de abstracte read(). Subklassen implementeren de versie voor één byte; het lezen van meerdere bytes is de sjabloon.

Sjabloonmethode voor rapportgeneratie

Definieer een rapportsjabloon: verzamel gegevens, maak ze op en geef ze als uitvoer. Wissel subklassen voor PDF-, HTML- of CSV-uitvoer om zonder de coördinatielogica te wijzigen.

public abstract class ReportGenerator {
    public final String generate() {
        List<Record> data = fetchData();
        String body = format(data);
        return wrap(body);
    }
    protected abstract List<Record> fetchData();
    protected abstract String format(List<Record> data);
    protected String wrap(String body) { return body; } // hook
}

Overschrijven van de sjabloon voorkomen

Declareer de sjabloonmethode als final om te voorkomen dat subklassen de algoritmestructuur wijzigen. Alleen de haakmethoden en abstracte methoden mogen overschrijfbaar zijn.

public final void process() {
    validate(); // abstract
    execute();  // abstract
    cleanup();  // hook with default
}

Abstracte versus concrete stappen

Maak een stap abstract wanneer deze door de subklasse moet worden aangeleverd. Maak de stap concreet, eventueel leeg, wanneer subklassen deze mogen overschrijven voor aanpassing.

Sjabloonmethode in JUnit

setUp() en tearDown() van JUnit 4 zijn haakmethoden in de sjabloonmethode die door de testrunner wordt gedefinieerd. De runner bepaalt wanneer ze worden aangeroepen.

Sjabloonmethode in Spring

Spring's JdbcTemplate gebruikt intern de sjabloonmethode. De sjabloon beheert de verbinding, het maken van de instructie en het opruimen; je levert een RowMapper-lambda voor de variërende stap rij toewijzen.

List<User> users = jdbcTemplate.query(
    "SELECT * FROM users",
    (rs, row) -> new User(rs.getLong("id"), rs.getString("name"))
);

Diepe overerving vermijden

De sjabloonmethode steunt op overerving, wat diepe klassenhiërarchieën kan opleveren. Beperk dit tot één of twee niveaus. Als subklassen veel stappen op verschillende manieren gaan overschrijven, overweeg dan over te schakelen op strategie.

Korte controle

Welk sleutelwoord voorkomt dat subklassen de volgorde van de sjabloonmethode wijzigen?

Samenvatting

De sjabloonmethode legt het algoritmeraamwerk met final vast in een basisklasse. Subklassen implementeren abstracte stappen en kunnen haakmethoden optioneel overschrijven. Houd hiërarchieën ondiep en gebruik strategie wanneer meer flexibiliteit nodig is.

Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
104
Lessen
374

Veelgestelde vragen

Is de les “Template Method: algoritmeskeletten definiëren” gratis?

Ja — de volledige tekst van “Template Method: algoritmeskeletten definiëren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 4 lessen.

Wat leer ik in “Template Method: algoritmeskeletten definiëren”?

Definieer het skelet van een algoritme in een basisklasse en laat subklassen de stappen invullen. Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Java Academy te beginnen?

Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Template Method: algoritmeskeletten definiëren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Java Academy?

Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Observer-patroon: gebeurtenismeldingen
  2. Strategy-patroon: uitwisselbare algoritmen
  3. Command-patroon: acties inkapselen
  4. Template Method: algoritmeskeletten definiëren
← Terug naar Java Academy