package com.cheng.mvcframestudy.simplemvc.model; import java.util.ArrayList; import java.util.List; public final class StarRatingModel { public static final int MAX_STARS = 5; public interface Listener { void handleStarRatingChanged(StarRatingModel sender); } private int stars = 1; private List<Listener> listeners = new ArrayList<Listener>(); public StarRatingModel() { } public int getStars() { return stars; } public void setStars(int stars) { if (stars > MAX_STARS) { stars = MAX_STARS; } else if (stars < 0) { stars = 0; } if (stars != this.stars) { this.stars = stars; for (Listener listener : listeners) { listener.handleStarRatingChanged(this); } } } public void addListener(Listener listener) { this.listeners.add(listener); } public void removeListener(Listener listener) { this.listeners.remove(listener); } }