| Web开发过程中所使用的各种浏览器API,其本身组合的也并不足够合理。有时候为了执行某项操作,我们需要连续操作很多接口。而实际上,在大多数情况下,我们都没必要这么DRY(Do Repeat Yourself).
你可以看到,其实上面两种情况就分别对应于设计模式中的Adapter和Façade两种模式的需求。那么,下面让我们看看如何在实际的代码中应用上述两种模式解决问题?
四、 如何应用Adapter和Facade模式?
在《Ajax in action》中,同样有一段代码,体现了这样的需求。我把它修改了一下,大家看看,能否从中找出Adapter和Facade模式的影子?
CGIAJAX.util["STATICS"] = {};
CGIAJAX.util.STATICS.READY_STATE_UNINITIALIZED=0;//constant
CGIAJAX.util.STATICS.READY_STATE_LOADING=1;
CGIAJAX.util.STATICS.READY_STATE_LOADED=2;
CGIAJAX.util.STATICS.READY_STATE_INTERACTIVE=3;
CGIAJAX.util.STATICS.READY_STATE_COMPLETE=4;
CGIAJAX.util.ContentLoader = function(url, onload, method, msgBody, onerror)//constructor, contains all attributes
{
this.url=url;
this.onload=onload;
this.method = (method) ? method : "GET";//default value of method is GET
this.msgBody = (msgBody) ? msgBody : null;//default value of message body send to server
this.onerror=(onerror) ? onerror : this.defaultError;//default method to handle error
this.req=null;
}
//contains all method
CGIAJAX.util.ContentLoader.prototype=
{
loadXMLDoc:function()//send request to server to get response
{
if (window.XMLHttpRequest)
上一页 [1] [2] [3] [4] [5] [6] 下一页 |