Tag: 观察者模式

观察者,发布/订阅和数据绑定之间的区别

观察者模式 , 发布/订阅和数据绑定有什么区别? 我search了一下,所以没有find任何好的答案。 我曾经相信的是,数据绑定是一个通用的术语,实现它的方式有很多,例如Observer Pattern或者Pub / Sub模式。 通过Observer模式,Observable可以更新观察者。 通过发布/订阅,0多个发布者可以发布某些类别的消息,并且0多个订阅者可以订阅某些类别的消息。 还有其他模式实现“数据绑定”?

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

一位面试官问我: Observer和Observable是什么,我们应该什么时候使用它们? 我没有意识到这些条款,所以当我回到家时,我开始使用关于Observer和Observable Googlesearch,并从不同的资源中find了一些要点: 1) Observable是一个类, Observer是一个接口。 2) Observable类保持观察者列表。 3)当一个Observable对象被更新时,它调用每个Observers的update()方法来通知它,它被改变了。 我发现这个例子: 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 […]

代表团:Angular2中的EventEmitter或Observable

我正在尝试在Angular2中实现类似于委托模式的东西。 当用户点击一个nav-item ,我想调用一个函数,然后发出一个事件,这个事件又应该由其他组件监听事件。 这里是场景:我有一个Navigation组件: import {Component, Output, EventEmitter} from 'angular2/core'; @Component({ // other properties left out for brevity events : ['navchange'], template:` <div class="nav-item" (click)="selectedNavItem(1)"></div> ` }) export class Navigation { @Output() navchange: EventEmitter<number> = new EventEmitter(); selectedNavItem(item: number) { console.log('selected nav item ' + item); this.navchange.emit(item) } } 这里是观察部分: export class ObservingComponent { // […]