單利設(shè)計模式、構(gòu)造原型設(shè)計模式、發(fā)布訂閱設(shè)計模式、promise設(shè)計模式
單利模式
let model = (function() {
let fn = function() {
// .....
}
return {
init: function() {
fn()
},
fn: fn,
}
})();
model.init();
構(gòu)造原型設(shè)計模式
最貼近OOP面向?qū)ο缶幊趟枷氲?/p>
不管是封裝類庫還是插件或者UI組件,都是基于構(gòu)造原型模式開發(fā)的。
class Person {
constructor(...arg){
// 私有屬性或者方法
let [x = 0, y = 1] = arg
this.x = x
this.y = y
}
// 公有屬性方法
say() {
console.log(this.name)
}
}
let p1 = new Person();
// 繼承Person類
class Child extends Person {
constructor(x,y,z){
super(x,y,z);
this.z = z
}
fn(){
this.say()
}
}
let c1 = new Child(100,200,300)
發(fā)布訂閱設(shè)計模式:觀察者模式
不同于單利和構(gòu)造,發(fā)布訂閱是小型設(shè)計模式。應(yīng)用到某一個具體的需求中:凡是達到某個條件之后要執(zhí)行N多方法,我們都可以依托于發(fā)布訂閱模式管理和規(guī)劃我們的js代碼
實現(xiàn)思路:
1、創(chuàng)建一個計劃表(容器)
2、后期要做什么事情一次吧需要的處理事情增加到計劃表中
3、當(dāng)符合某個條件時,通知計劃表按照順序執(zhí)行
promise設(shè)計模式
解決ajax異步請求層級嵌套問題