商场搞活动,周一到周五翻着花样来。算法不同,目标一致(让利促销)。
function monday() {
// 买一送一
}
function tuesday() {
// 第二份半价
}
function wednesday() {
// 三人同行一人免单
}
function joinActivity(day) {
var map = {
monday: monday,
tuesday: tuesday,
wednesday: wednesday,
thursday: thursday,
friday: friday
};
return map[day]();
}
joinActivity('monday'); //买一送一
策略&观察者
function Activity() {}
var activity = new Activity();
//模块Day将一些列促销算法注册到activity上
activity.bind('周一', Day.monday);
activity.bind('周二', Day.tuesday);
activity.bind('周三', Day.wednesday);
//activity 只关注店铺开张,并触发对应的事件,其中的具体的操作则不关心。
activity.openShop(function(day) {
activity.emit(day); // 触发对应的事件
});