package model; /** * A lens interface representing a view into a mutable state. * * @param <S> The type of the value stored in the lens. */ public interface Lens<S> { /** * Gets the value from the {@link Lens}. * * @return The value stored in the place designated by {@link Lens}. */ S get(); /** * Sets a new value into the {@link Lens}. * * @param value The new value to set in the place designated by the {@link Lens}. */ void set(S value); }