三種設計模式 單例模式 組合模式 觀察者模式

2021-10-03 07:00:17 字數 1509 閱讀 8589

設計模式

今天我們就聊一下這三個設計模式

單例模式

也就是說,當我們使用建構函式,每一次 new 出來的物件 屬性/功能/方法 完全一樣 的時候,我們把他設計成單例模式

核心** 應用

creatediv.prototype.init = function (text) 

// 準備把這個 creatediv 做成單例模式

// 讓 singleton 成為乙個閉包函式

const singleton = (function ()

instance.init(text)

return instance

}})()

singleton('hello') // 第一次的時候,頁面中會出現乙個新的 div ,內容是 hello

singleton('world') // 第二次的時候,不會出現新的 div,而是原先的 div 內容變成了 world

組合模式

準備乙個 組合模式 的建構函式

class compose

// 新增任務的方法

add (task)

// 乙個執行任務的方法

execute () )

}}

我們就用我們的組合模式建構函式來吧前面的幾個功能組合起來

const c = new compose()

// 把所有要完成的任務都放在佇列裡面

c.add(new gethome())

c.add(new opencomputer)

c.add(new playgame)

// 直接器動任務佇列

c.execute()

// 就會按照順序執行三個物件中的 init 函式

觀察者模式

乙個例子

addeventlistener

說白了: 觀察者模式就是我們自己實現乙個 addeventlistener 的功能

書寫**on

emit

off

以上就是最基本的 觀察者模式

接下來我們就使用一下試試看

使用一下

const o = new observer()

// 準備兩個事件處理函式

function a(e)

function b(e)

// 訂閱事件

o.on('abc', a)

o.on('abc', b)

// 發布事件(觸發)

o.emit('abc', '100', '200', '300') // 兩個函式都回執行

// 移除事件

o.off('abc', 'b')

// 再次發布事件(觸發)

o.emit('abc', '100', '200', '300') // 只執行乙個 a 函式了

單例設計模式的三種方式

單例模式 0 保證乙個類只能獲取乙個例項 1,步驟 1.構造方法私有化 外部不能訪問,無法建立例項 2.在類的內部自己建立自己的例項,並且設定為static 因為外部不能獲取其實例,只能靜態獲取 public class singleton 單例 final修飾的 class student 單例 ...

設計模式三 單例模式

單例模式也是建立型模式的一種,也是23種設計模式中比較簡單的一種。見名思意,在整個軟體系統中,只有某個型別的乙個物件,並且訪問他的地方也只有乙個,也就是只有乙個全域性物件訪問點,這個例項或物件被所有是應用程式所共享 很多可以使用到這樣的功能模組 比如資料庫連線池物件 印表機物件,因為整個系統中,資料...

設計模式 三 單例模式

package zzq.designpatterns.creativepattern import lombok.data 單例 singleton 模式的定義 指乙個類只有乙個例項,且該類能自行建立這個例項的一種模式。例如,windows 中只能開啟乙個任務管理器,這樣可以避免因開啟多個任務管理器...