• JS设计模式基础


    设计模式:

    通过封装、继承、多态、组合等技术的反复使用,提炼出一些可重复使用的面向对象设计技巧。

    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.单一原则。

    仅有一个引起它变化的原因。如果有多个变化引起改变,容易将职责耦合在一块,导致耦合脆弱,低内聚。

  • 相关阅读:
    浏览器网络相关概念
    量化投资:以python为工具
    Quantitative Strategies for Achieving Alpha (三)
    Quantitative Startegies for Achieving Alpha(二)
    Quantitative Strategies for Achieving Alpha(一)
    打开量化投资的黑箱(二)
    打开量化投资的黑箱(一)
    量化投资学习(一)
    handy源码阅读(六):tcp类
    handy源码阅读(六):udp类
  • 原文地址:https://www.cnblogs.com/rainbow661314/p/6934584.html
Copyright © 2020-2023  润新知