码迷,mamicode.com
首页 > Web开发 > 详细

JS设计模式基础

时间:2017-06-02 18:24:23      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:组合   function   ber   不同的   prot   obj   命令   animal   number   

1.多态(’做什么‘和’谁去做‘分开)

同一操作应用于不同的对象上面,可以产生不同的解释和不同的执行结果(例如不同的动物发出叫声)。将不变的隔离出来。

//对象
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() );

使用继承得到多态的效果。(一只麻雀在飞,一只喜鹊在飞)可以说 一只鸟在飞。  java使用抽象类继承。

多态与设计模式(命令模式,组合模式,策略模式)

2.封装 (更重要的封装变化,将不变的部分和容易变化的部分分隔出来)

1)封装数据。2)封装实现。(迭代器,each)3)封装类型。4)封装变化。

//封装实现
function $each(jn, fn) {
    var len = jn.length;
    if ("number" === typeof len) {
        for (var i = 0; i < len; i++) {
            try {
                fn(jn[i], i,jn);
            } catch(e) {
                if ($break(e)) {
                    break;
                } else {
                    throw e;
                };
            }
        }
    } else {
        for (var k in jn) {
            try {
                fn(jn[k], k,jn);
            } catch(e) {
                if ($break(e)) {
                    break;
                } else {
                    throw e;
                };
            }
        }
    }
}

 

3.克隆。

Object.create = Object.create || function( obj ){
    var F = function(){};
    F.prototype = obj;
    return new F();
}

4.开放-封闭原则。

放在过多的 if-else里的逻辑抽离出来放函数里。

5.单一原则。

 

JS设计模式基础

标签:组合   function   ber   不同的   prot   obj   命令   animal   number   

原文地址:http://www.cnblogs.com/rainbow661314/p/6934584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!