js开放——封闭模式

来源:互联网 发布:ubuntu 14.04 iso下载 编辑:程序博客网 时间:2024/05/01 07:16
   <h1>开放——封闭原则</h1>   <p>在面向 对象的程序设计中,开放——封闭原则(OCP)是最重要的一条原则。一个程序具有良好的设计,往往说明它是符合开放——封闭原则。</p>   <p>开放——封闭的原则思想:当需要改变一个程序的功能或者给这个程序增加新功能的时候,可以使用增加代码的方式,但不可以改动程序的源代码。</p>、   <p>用对象的多态性消除条件分支</p>   <script>      var makeSound = function( animal ){         animal.sound();      };            var Duck = function(){};      Duck.prototype.sound = function(){          console.log( "嘎嘎嘎" );      };            var Chicken = function(){};      Chicken.prototype.sound = function(){          console.log( "咯咯咯" );      };            makeSound( new Duck() );      makeSound( new Chicken() );      /*增加动物狗,不用改动原有的makeSound函数*/      var Dog = function(){};      Dog.prototype.sound = function(){         console.log( "汪汪汪" );      };      makeSound( new Dog() );          </script>    <p>开放——封闭原则:找出变化的地方</p>    <p>通过封装变化的方式,可以把系统中稳定不变的部分和容易变化的部分隔离开来。在系统的演化过程中,我们只需要替换那些         容易变化的部分,如果这些部分是已经被封装好的,那么替换起来也相对容易。而变化之外是稳定的部分。在系统的演变过程,稳定的部分是不需要改变的。</p>    <h1>使用回调函数</h1>    <script>       //arrayMap函数的作用是把一个数组“映射”为另一个函数。映射的步骤是不变的,而映射的规则是可变的,于是我们把这部分规则放在回调函数中,传入arrayMap函数:       var arrayMap = function( ary, callback ){          var i = 0,              length = ary.length,              value,              res = [];                    for( ; i < length; i++ ){             value = callback( i, ary[ i ] );             res.push( value );          }                        return res;       };              var a = arrayMap( [ 1, 2, 3, 34 ], function( i, n ){          return n*2;       } );              console.log( a );    </script>    <h1>设计模式中的开放——封闭原则</h1>    <p>1.发布——订阅模式</p>    <p>2.模板方法模式</p>    <p>3.策略模式</p>    <p>4.代理模式</p>    <p>5.职责链模式</p>

0 0