今天实验室一个妹子面试的时候被问到了一个问题什么是观察者模式
,并写了一个代码题,虽然之前有了解过设计模式,但是当时感觉好像没有使用过,然后了解了一下才发现原来观察者模式
就是发布-订阅模式
,因为感觉自己还没有完全了解该模式,所以这篇文章暂时只写一下这个代码题吧
题目:有一个对象a
,然后有一个属性props
,当我的props
变化后,b
输出props
变化
自己觉得应该是下面这样写:
var PubSub = (function() {
var eventObj = {};
var props = 1;
//订阅
var subscribe = function(event, fn) {
var props = arguments[0];
if(props != 1){ //监测是否变化
eventObj[event] = fn;
}
};
//发布
var publish = function(event) {
if (eventObj[event]){
eventObj[event]();
}
};
return {
subscribe: subscribe,
publish: publish
}
}());
var props2 = 2; //如果这里props2 = 1则不会输出
PubSub.subscribe(props2, function() {
console.log('props被修改为'+props2);
});
PubSub.publish(props2);
如果我理解有误,求大神指点