本帖最后由 coglass 于 2013-01-03 22:30:49 编辑

解决方案 »

  1.   

    1.
    var view={render:funtion(){
            
    }}
    view.render()
    这样写的好处可以避免了方法名冲突问题.
    如果用function render(){}方式,可能在某个地方有一个var render = 123;这样的变量,如此一来就冲突了.
    但是view.render();就不会有方法名冲突
    2. 开闭原则
    从代码维护角度上来说就是对增加开放,对修改闭合.比如我要新增一个功能,如果我能直接新增一个JS文件就能实现这个功能这样最好.
    或者直接在JS文件内新增一个函数来实现这个功能.反之,如果要去修改原来JS内部的代码来实现,这样就不太好了.比如有这么一个需求:
    需要根据后台返回的错误码来提示不同的错误信息,如1000-"用户名不存在",1001-"验证码不正确"等.
    常规的做法就是用多个if else..语句来判断错误码,然后提示信息;万一以后我又要新加一个错误码,那就要
    再在源代码中增加一个if语句,有没有一个办法让我新增一个JS文件,或者新增一个函数就能实现呢
    答案是有的:
    <script type="text/javascript">
    var ErrorCode = (function(){

    var codeMap = {};

    return {
    showError:function(errorCode) {
    var func = codeMap[errorCode];
    func();
    }
    // 设置代码事件
    ,setErrorCode:function(code,func) {
    codeMap[code] = func;
    }
    }
    })();// 设置错误码
    ErrorCode.setErrorCode('1000',function(){
    alert('用户名不存在');
    });
    ErrorCode.setErrorCode('1001',function(){
    alert('验证码错误');
    });
    // 运行错误码
    ErrorCode.showError('1000');
    </script>
    如果我要新增一个错误码:1002-"密码错误"那么我只要在另一个地方添加一句:
    ErrorCode.setErrorCode('1002',function(){
    alert('密码错误');
    });
    这句话写在另一个JS文件内,或者添加在JS文件最下方即可实现新的功能.
      

  2.   

    个人感觉不是什么严格的规定,但是用着用着你会发现它这么做很好,所以慢慢地就成这样了(开闭原则不同)
    第一个单例模式的话,在Java里就是一个类只对应一个实体存在,不用new很多,省资源吧。在Hibernate做数据库的时候用到过,其他我很少用到过。
    第二个开闭原则,这个是Java里面最重要的了,同楼上各位所说的那样。lz可以想一下java里面向接口编程的方式,