为了账号安全,请及时绑定邮箱和手机立即绑定

我们什么时候应该使用Observer和Observable?

我们什么时候应该使用Observer和Observable?

互换的青春 2019-10-23 15:46:34
面试官问我:什么是Observer,什么Observable时候应该使用它们?我不知道这些术语,所以当我回到家并开始搜索Observer和时Observable,从不同的资源中发现了一些要点:1)Observable是一个类,Observer是一个接口。2)Observable该类维护一个Observers 列表。3)当一个Observable对象被更新时,它调用其update()每个Observers 的方法来通知它已被更改。我发现了这个例子:import java.util.Observable;import java.util.Observer;class MessageBoard extends Observable{    public void changeMessage(String message)     {        setChanged();        notifyObservers(message);    }}class Student implements Observer {    @Override    public void update(Observable o, Object arg)     {        System.out.println("Message board changed: " + arg);    }}public class MessageBoardTest {    public static void main(String[] args)     {        MessageBoard board = new MessageBoard();        Student bob = new Student();        Student joe = new Student();        board.addObserver(bob);        board.addObserver(joe);        board.changeMessage("More Homework!");    }}但是我不明白为什么我们需要Observer和Observable?的用途setChanged()和notifyObservers(message)方法是什么?
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您有一个学生和一个留言板的具体示例。学生将自己添加到希望在新消息发布到MessageBoard时得到通知的观察者列表中进行注册。将消息添加到MessageBoard时,它将遍历其Observers列表,并通知他们事件已发生。

想想Twitter。当您说要关注某人时,Twitter会将您添加到他们的关注者列表中。当他们发送新推文时,您会在输入中看到它。在这种情况下,您的Twitter帐户是观察者,而您关注的人是观察者。

这个类比可能并不完美,因为Twitter更可能是调解人。但这说明了这一点。


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 558 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信