party-bid短信处理,sms责任链模式
为了使我们的程序看起来更加面向对象,我们不但要把自己的代码功能模块化,每个函数只实现一个功能,还要写成责任链的模式,使我们的程序可读性更强,逻辑更加清晰。下面是我在party-bid里的短信处理SMS的一个例子。第一段就是用责任链的模式写的,第二段是没有实现没有改写之前的代码,它们实现了同样的功能,大家可以对比看到责任链模式的优越性。
function notify_sms_received(json_message) { var SMSObj = sms_to_obj(json_message) var flag = SMSObj.text.substr(0, 2).toUpperCase() var phone = SMSObj.phone if (flag == "BM") { var name = SMSObj.text.substr(2).trim() return process_sign_up_message(name, phone) } var price = SMSObj.text.substr(2).trim() if (flag == 'JJ' && !isNaN(price)) { return process_bid_message(price, phone) }}function process_sign_up_message(name, phone) { if (localStorage.is_signing_up == 'true') { return SignUp.judge_repeat_phone(name, phone) }}function process_bid_message(price, phone) { if (localStorage.is_bidding == 'true' && Bidding.get_name(localStorage.current_activity,localStorage.current_bid,phone)) { return Bidding.judge_repeat_phone(price, phone) }}function sms_to_obj(json_message){ var SMSObj; _.each(json_message.messages, function (message) { SMSObj = { 'text': message.message, 'phone': message.phone } }) return SMSObj}
?
?