Chess.java
package com.designpatterns.behavioral.templatemethod.classic;
import java.util.ArrayList;
import java.util.List;
public class Chess extends Game {
private final List<String> log = new ArrayList<>();
@Override
protected void initialize() {
log.add("Chess: setting up 32 pieces");
}
@Override
protected void startPlay() {
log.add("Chess: white moves first");
}
@Override
protected void endPlay() {
log.add("Chess: checkmate declared");
}
@Override
protected void announceWinner() {
log.add("Chess: white wins by checkmate");
}
public List<String> log() {
return List.copyOf(log);
}
}