javascript 对象的设计模式

1、为什么学习设计模式:http://www.iteye.com/news/32092   或  https://blog.csdn.net/pigpigpig4587/article/details/48630223  ( 设计模式的作用是让人们写出可复用和可维护的程序)

 (个人):设计模式,可以看做是 创建对象的 函数的一种代码风格(本质上就是通过经验积累,总结了几种比较好的这种函数结构)。不同的设计模式,应对变动的需求,处理效果是有很大差异的;如果不考虑设计模式,随意用,需求的开发都是可以实现的。

      但是需求改变,维护的时候,不同的设计模式 维护难易就会很明显。设计模式  讲的是创建对象的 类 函数(因为对象除了构造函数创建,也可以用函数return一个对象进行创建,如 单例模式)。

2、浅谈JS的一些设计模式 : https://www.jianshu.com/p/010071439eaa

3、Javascript设计模式 : https://www.cnblogs.com/chenxygx/p/5754101.html

4、常用的javascript设计模式  : https://www.cnblogs.com/xianyulaodi/p/5827821.html (这个比较详细) 或  https://www.cnblogs.com/imwtr/p/9451129.html

5、单例模式 :

  使用场景:

         单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如全局缓存、浏览器的window对象、loading效果。在js开发中,单例模式的用途同样非常广泛。试想一下,当我们

         单击 右上角登录按钮的时候,页面中会出现一个登录框 (这个组件不能事先创建好,使用显隐控制。因为只有未登入的用户才会需要创建),而这个浮窗是唯一的,无论单击多少次登录按钮,这个浮窗只会被创建一次。因此这个登录浮窗就适合用单例模式。

var single = (function(){
    var unique;

    function getInstance(){
    // 如果该实例存在,则直接返回,否则就对其实例化
        if( unique === undefined ){
            unique = new Construct();
        }
        return unique;
    }

    function Construct(){
        // ... 生成单例的构造函数的代码
    }

    return {
        getInstance : getInstance
    }
})();
View Code

  上面是 参考链接中 构造函数单例模式的 创建。基于这种单例模式,可以变成只执行一次函数的  单例模式 。

    var single = (function(){
        var unique;     // 返回的函数中有指向 unique变量,所以函数执行完毕后,这个变量还是保存在内存中的。
        function getInstance(){
        // 如果该实例存在,则直接返回,否则就对其实例化
            if( unique === undefined ){
                unique = construct();
            }
            return unique;
        }
        function construct(){
            // ... 执行一次 功能的代码
            console.log('uu');
            return true;
        }
        return getInstance;
    })();

  个人总结:单例模式,利用了闭包的特性。函数执行完,但是函数内某些变量没有被回收的特点。             为什么闭包函数某些变量不被回收的原理 参考:https://www.cnblogs.com/wfblog/p/8951886.html

6、观察者模式(发布订阅模式):

  应用场景:  

    这个模式要先说应用场景,比较好理解。

    打一个离我们比较近的一个场景,博客园里面有一个订阅的按钮(貌似有bug),比如小A,小B,小C都订阅了我的博客,当我的博客一有更新时,就会统一发布邮件给他们这三个人,就会通知这些订阅者

7、

总结:

    1、功能复杂的时候,考虑扩展性的时候,模块解耦,就要考虑使用设计模式
  2、单例,发布订阅,适配器 用的比较多。
  3、基本是造轮子的时候会使用到,平时都不太考虑这个。

 

 
 
 
 
 
 
原文地址:https://www.cnblogs.com/wfblog/p/9981453.html