1. 單例模式
每次實例化后的對象都一樣
new Singleton===new Singleton=>true
ES5
function Singleton(){
// 判斷是否存在實例
if (typeof Singleton.instance === 'object') {
return Singleton.instance;
}
// 緩存
Singleton.instance = this;
}
ES6
class Singleton{
static instance
constructor(){
if(typeof Singleton.instance==='object'){
return Singleton.instance
}
Singleton.instance=this;
}
}
2. 構(gòu)造函數(shù)模式
構(gòu)造函數(shù)當(dāng)成普通函數(shù)使用來實現(xiàn)
Person(123) instanceof Person=>true,不過方法最好寫在原型鏈上,
當(dāng)有大批量的實例的話,可以共享資源,就會節(jié)約很多內(nèi)存
ES5
function Person(age){
if (!(this instanceof Person)) {
return new Person(age);
}
this.age = age;
}
ES6
class Person{
constructor(){
}
}
在
ES6中,會拋出異常Cannot call a class as a function
3. 職責(zé)鏈模式
從第一個對象開始,鏈中收到請求的對象親自處理它,然后處理完畢后轉(zhuǎn)發(fā)給鏈中的下一個處理者
class Handle{
constructor(func,handle){
this._func=func;
this._next=handle;
}
invoke(){
(this._func||(()=>{}))()
if(this._next) this._next.invoke()
}
}
待續(xù)。。。。
參考鏈接