Checkers.java
package com.designpatterns.behavioral.templatemethod.classic;
import java.util.ArrayList;
import java.util.List;
public class Checkers extends Game {
private final List<String> log = new ArrayList<>();
@Override
protected void initialize() {
log.add("Checkers: setting up 24 pieces");
}
@Override
protected void startPlay() {
log.add("Checkers: dark pieces move first");
}
@Override
protected void endPlay() {
log.add("Checkers: no more legal moves for one side");
}
// announceWinner() is intentionally not overridden - the default hook (no-op) is fine here.
public List<String> log() {
return List.copyOf(log);
}
}