首页 > 代码库 > js30--代理模式
js30--代理模式
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type=text/javascript charset=utf-8 src=../commons/CommonUtil.js ></script> <script type=text/javascript charset=utf-8> //代理模式(proxy):代理也是对象,他的目的就是为了节制(控制)对本体对象的访问 var LibraryInterface = new BH.Interface(‘LibraryInterface‘ ,[‘addbook‘,‘findbook‘,‘checkoutbook‘,‘returnbook‘]); var Book = function(id , title , author){ this.id = id; this.title = title ; this.author = author; }; //图书馆(本体对象 , 实例化图书馆需要消耗很多的资源) var Library = function(books){ this.books = books;//{bookid : book} }; Library.prototype = { constructor:Library , addbook:function(book){ this.books[book.id] = book;//访问json用中括号 }, findbook:function(id){ if(this.books[id]){ return this.books[id]; } return null; }, checkoutbook:function(id){ //电脑登记..交押金 return this.findbook(id); }, returnbook:function(book){ //电脑登记(...已还) //计算费用(计算余额) this.books[book.id] = book; } }; //图书馆的代理对象 var LibraryProxy = function(books){ alert(‘产生代理对象,但是并没有产生真正的本体对象!‘); this.books = books; this.library = null; //定义一个空对象 }; LibraryProxy.prototype = { constructor:LibraryProxy , initializeLibrary:function(){ if(this.library == null){ alert(‘真正的本体对象!‘); this.library = new Library(this.books); } }, addbook:function(book){ this.initializeLibrary(); //实际上具体做事情的还是本体对象自己本身 this.library.addbook(book); }, findbook:function(id){ this.initializeLibrary(); return this.library.findbook(id); }, checkoutbook:function(id){ this.initializeLibrary(); return this.findbook(id); }, returnbook:function(book){ this.initializeLibrary(); this.library.returnbook(book); } }; //实例化的是代理对象:推迟本体对象实例化的时间,什么时候具体去做事情了,再去实例化它 // hibernate: get(全查询出来) load(返回代理对象) var proxy = new LibraryProxy({ "01":new Book(‘01‘,‘java‘,‘z3‘), "02":new Book(‘02‘,‘js‘,‘z4‘) }); alert(proxy.findbook(‘01‘).title); </script> </head> <body> </body> </html>
js30--代理模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。