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>
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/6885382.html,如需转载请自行联系原作者

相关文章
|
6月前
|
设计模式 缓存 JavaScript
js设计模式【详解】—— 代理模式
js设计模式【详解】—— 代理模式
36 0
|
8月前
|
设计模式 JavaScript 算法
js设计模式-策略模式与代理模式的应用
策略模式和代理模式是JavaScript常用设计模式。策略模式通过封装一系列算法,使它们可互换,让算法独立于客户端,提供灵活的选择。例如,定义不同计算策略并用Context类执行。代理模式则为对象提供代理以控制访问,常用于延迟加载或权限控制。如创建RealSubject和Proxy类,Proxy在调用RealSubject方法前可执行额外操作。这两种模式在复杂业务逻辑中发挥重要作用,根据需求选择合适模式解决问题。
|
设计模式 JavaScript 前端开发
|
设计模式 前端开发 JavaScript
JavaScript设计模式-代理模式(12)
JavaScript设计模式-代理模式(12)
JavaScript设计模式-代理模式(12)
|
设计模式 存储 缓存
「设计模式 JavaScript 描述」代理模式
「设计模式 JavaScript 描述」代理模式
|
设计模式 缓存 JavaScript
JavaScript代理模式之四大代理
JavaScript代理模式之四大代理
129 0
JavaScript代理模式之四大代理
|
存储 设计模式 缓存
JavaScript 设计模式之代理模式
代理模式,代理(proxy)是一个对象,它可以用来控制对另一个对象的访问。
112 0
JavaScript 设计模式之代理模式
|
JavaScript 前端开发
#yyds干货盘点# 【js学习笔记四十二】代理模式
#yyds干货盘点# 【js学习笔记四十二】代理模式
137 0
#yyds干货盘点# 【js学习笔记四十二】代理模式
|
设计模式 JavaScript 前端开发
JavaScript中的设计模式-代理模式
设计模式在我们编程中是十分重要的! 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。