设计模式

设计模式
什么是设计模式?(单例、工厂、观察者、代理、策略等,后台语言设计模式:MV*--->MVC   MVVM 不属于23种设计模式 )
MV
MVC  
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。   设计模式就是一种 编程规范  架构层面的
 
单例模式
什么是单例 ? 永远保持对象的一个实例(多次创建对象这些对象只指向一个对象)
 
原理 : 在构造函数中,先将第一次new出来的对象  this  存入到一个变量中 并返回这个变量
       再次创建对象时(new) , 判断这个变量中是否含有值,如果有 就返回该对象
                function Fn(){
                    if( !Fn.ins ){
                        Fn.ins = {
                            属性:属性值
                        }
                    }
                    return Fn.ins
                }
 
单例模式好处 : 可以实现私有变量的全局累加功能
               减少对象的创建,节省资源,适当的时候通过单例共享数据
 
工厂模式
让对象的调用者和对象创建过程分离,当对象调用者需要对象时,直接向工厂请求即可。从而避免了对象的调用者与对象的实现类似编码方式耦合,以提高系统的可维护性、可扩展性。
 
观察者模式(异步现象)
观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。    
 
在一个构造函数中 通知另外一个构造函数 要实现的方法  
烧水 --
 
小孩哭了  ----  饿了  开始喂奶了
function Child(dad,mum){
    this.dad = dad;
    this.mum = mum;
    this.cry = function(){
            //观察者模式   
        //小孩哭了  通知父亲该给孩子喂奶了
         this.dad.weinai();
    }
 
    setTimeout(function(){
        this.cry();
    }.bind(this),Math.random()*5000+300)
}
 
function Dad(){
    this.weinai = function(){
        alert("给孩子冲奶粉~~~");
    }
}
 
 
代理商模式
作用
    在于执行目标函数之前,可以先做一些其他的相关操作
原文地址:https://www.cnblogs.com/tis100204/p/10302402.html