package org.dayatang.observer; import org.dayatang.domain.AbstractEntity; import javax.persistence.MappedSuperclass; import java.util.List; @SuppressWarnings("unchecked") @MappedSuperclass public abstract class AbstractSubjectEntity extends AbstractEntity implements Subject { /** * */ private static final long serialVersionUID = 8696877724719553088L; /** * 获得主题标识。默认返回主题的类名。 * * @return */ public String getSubjectKey() { return getClass().getName(); } @Override public List<Observer> getObservers() { // 每次查找最新的观察者,将来考虑加入缓存机制 return Observer.findBySubject(this); } @Override public void notifyObservers() { List<Observer> observers = getObservers(); for (Observer observer : observers) { observer.process(this); } } }