昕er 2022-04-15 21:20 采纳率: 50%
浏览 15

这算是实现了观察者模式吗?

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("更新");
    }
}

  • 写回答

2条回答 默认 最新

  • A Python 萌新花花 2022-04-15 21:27
    关注

    大概算是

    评论

报告相同问题?

问题事件

  • 创建了问题 4月15日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?