1.單例模式:每個new出來的例項都需要有乙個相同的方法,但是這時候如果 每個例項都新建乙個這種方法,太佔據記憶體也太慢,所以在這裡有乙個重要的判斷:如果有例項,則返回例項;如果沒有例項,則建立例項,並且返回例項。
例:
class createuserreturn createuser.ins;
}constructor(name)
getname()
}let c1 = createuser.shareinstance()
let c2 = createuser.shareinstance()
console.log(c1==c2)
2.組合模式:組合模式中基本物件和組合物件被一致對待;無須關心物件有多少層, 呼叫時只需在根部進行呼叫;類似dom樹
例:
const macrocommand = function() ,excute: function()
},}}
const command1 = macrocommand() // 命令1
command1.add()
const command2 = macrocommand() // 命令2
command2.add()
command2.add()
const command3 = macrocommand() //命令3
command3.add()
command3.add()
const macrocommand = macrocommand()//組合物件
macrocommand.add(command1)
macrocommand.add(command2)
macrocommand.add(command3)
macrocommand.excute()
// 吃飯
// 唱歌
//畫畫
// 下棋
// 玩遊戲
3. 觀察者模式:類似於事件監聽, 觀察者只要訂閱了被觀察者的事件,那麼當被觀察者的狀態改變時,被觀察者會主動去通知觀察者,而無需關心觀察者得到事件後要去做什麼,實際程式中可能是執行訂閱者的**函式
例:
var obj = ,}// defineproperty 可以觀察 obj物件 的list 屬性的使用
object.defineproperty(obj, 'list', ,
set(val)
})// 獲取了list屬性,那麼get 方法就會被呼叫
console.log(obj.list)
// 設定了list屬性set 方法就會被呼叫
obj.list = ['a', 'b']
4. 工廠模式: 去做同樣的事情,實現同樣的效果,批量生產
例:
// 文字工廠class text
insert(where)
}// 鏈結工廠
class link
insert(where)
}
5. 抽象的工廠模式:先標記好模式,然後下面引用,但是裡面什麼都沒有
class domfactory// 各流水線
insert()
}
6. 策略模式:策略類部分和環境類部分
①策略類:寫出好幾種策略,類似於plana,planb….
例:
var levelobj = ,"b": function (money) ,
"c": function (money)
};/*環境類*/
var calculatebouns = function (level, money) ;
console.log(calculatebouns('a', 10000)); // 40000
②環境類:執行的環境
例:
const myimage = function (parent)}// 直接新增 ,如果比較大,可能載入的比較慢,導致網頁上的img一開始顯示不出來
let myimage = new myimage(document.body)
// 寫個** 提供 預載入功能
const proxyimage = function (myimage) ,2000)
}this.setsrc =function (src) }//
let proxyimage = new proxyimage(myimage)
proxyimage.setsrc('')
8. 介面卡模式:類似於把obj物件轉為陣列,這時候如果是大量的操作怕出意外,就可以運用這種模式,就相當於有個中介轉一下
例:
// 老介面const zhejiangcityold = function () ,]}
console.log(zhejiangcityold())
// 新介面希望是下面形式
// // 這時候就可採用適配者模式
const adaptor = function (oldcity)
for (let city of oldcity)
return obj
}let olddata = zhejiangcityold();
//把老資料放在介面卡中產生新資料
console.log(adaptor(olddata))
既然看了這麼多設計者模式,接下來也可以了解一下hash,它在我們的應用中也很重要:
1.hash:傳統的網頁根據使用者訪問的不同位址,瀏覽器從伺服器獲取對應頁面的內容展示給使用者,這樣造成伺服器壓力比較大,使用者訪問比較慢,在這種場景下,出現了單頁應用。
2. hashchange:想要用hash就要監聽到hash什麼時候改變,這時候就需要用hashchange來監聽
設計者模式 構建者模式
一 介紹 場景 建造乙個複雜的產品。比如 神舟飛船,iphone,這個複雜的產品建立,有這樣乙個問題需要處理 裝配這些子元件,是不是有個步驟問題?實際開發中,需要的物件,在構建時,也非常複雜,有很多步驟需要處理。建造者模式的本質 分離物件子元件的單獨構造 由builder來負責 和裝配 由direc...
設計者模式 觀察者模式
一,定義 觀察者模式又叫發布 訂閱模式 publish subscribe 觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件.這個主體物件在狀態發生變化時,會通知所有的觀察者物件,是他們能夠自動更新自己 觀察者模式一般會牽扯至少兩個角色subject或publish,叫做...
c 設計者模式 工廠模式
1 面向介面程式設計 最簡單的表現形式是,你的變數要宣告成抽象基類 2 為什麼要實現面向介面程式設計 設計原則 依賴倒置原則 應該依賴抽象而不是細節。3 抽象基類是不能建立的,不能new的。4 建立物件的方法 除了在棧上 或者是在堆上建立物件,也可以通過方法返回物件。5 虛函式 執行時的依賴 模式定...