职责链模式:解决请求的发送者与请求的接受者之间的耦合,通过职责链的多个对象对分解请求流程,实现请求在多个对象之间的传递,直到最后一个对象完成请求的处理。
半成品需求
场景:给表单输入框添加事件,做输入提示和输入验证处理,完成这类需求要想服务器端发送请求还要在原有页面中创建其他组件,但是具体输入框有哪些还不确定。
做法:把事件源,异步请求,创建组件模块解耦。完成一个需求要做很多事情,那么把每件事情独立出一个模块对象去处理,这样完成一个需求要做这么多的事情,那就把每件独立出一个模块对象,这样完整的需求就被分解成一部分相互独立的模块需求,通过这些对象的分工协作,每个对象只做与自己分内的事,无关的事情传到下一个对象中去做,直到需求完成。
//请求数据
var sendData = function(data,dealType,dom){
var xhr = new XMLHTTPRequest(),
url = 'getData.php?mod=userinfo';
xhr.onload = function(event){
if(xhr.status >=200 && xhr.status<300 ||xhr.status == 304){
dealData(xhr.responseText,dealType,dom);
}else{
//请求失败
}
}
for(var i in data){
url += '&' + i + '=' + data[i]
}
//发送请求
xhr.open("get",url,true);
xhr.send