package de.edu.hsfulda.ccip.tdd.withdependencies; import java.util.Collection; import java.util.LinkedList; import java.util.stream.Collectors; public class GameOfLifeCell { private GameOfLifeStatus status; private final Collection neighborStates = new LinkedList<>(); private GameOfLifeStatus nexState; public GameOfLifeCell(GameOfLifeStatus status) { this.status = status; } public void addNeighbor(GameOfLifeCell neighbor) { neighborStates.add(neighbor); } public void caclulateNextState() { nexState = status .calculateNextBy(neighborStates.stream().map(GameOfLifeCell::getState).collect(Collectors.toList())); } public GameOfLifeStatus getState() { return status; } public void updateState() { status = nexState; } }