设计模式
什么是设计模式?(单例、工厂、观察者、代理、策略等,后台语言设计模式: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("给孩子冲奶粉~~~");
}
}
代理商模式
作用
在于执行目标函数之前,可以先做一些其他的相关操作