public interface Observer {
// 监听
public void update(String msg);
}
public class ObserverImpl implements Observer {
@Override
public void update(String msg) {
System.out.println("观察者发现消息:"+msg);
}
}
public interface Subject {
/**
*增加观察者
*/
public void add(Observer observerVo);
/**
*删除观察者
*/
public void delete(Observer observerVo);
/**
*发送观察者消息
*/
public void notifyObservers(String msg);
}
public class SubjectImpl implements Subject {
private List<Observer> observerVoList = new ArrayList<>();
/**
* 增加观察者
*
* @param observerVo
*/
@Override
public void add(Observer observerVo) {
observerVoList.add(observerVo);
}
/**
* 删除观察者
*
* @param observerVo
*/
@Override
public void delete(Observer observerVo) {
observerVoList.remove(observerVo);
}
/**
* 发送观察者消息
*
* @param msg
*/
@Override
public void notifyObservers(String msg) {
if (observerVoList != null && observerVoList.size()>0){
for (Observer observerVo: observerVoList){
observerVo.update(msg);
}
}
}
}
public class ObserverTest {
@Test
public void test(){
Subject subject = new SubjectImpl();
subject.add(new ObserverImpl());
subject.add(new ObserverImpl());
subject.add(new ObserverImpl());
subject.notifyObservers("更新");
}
}