原创 10、職責鏈模式

1、特點 使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係,將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止。 2、demo 公司針對支付過定金的用戶有一定的優惠政策。在正式購買後,已經支付過5

原创 12、裝飾者模式

1、特點 裝飾者模式可以動態地給某個對象添加一些額外的職責,而不會影響從這個類中派生的其他對象。 2、demo var Plane = function() {} Plane.prototype.fire = function() {

原创 9、享元模式

1、特點 享元(flyweight)模式是一種用於性能優化的模式,“fly”在這裏是蒼蠅的意思,意爲蠅量級。享元模式的核心是運用共享技術來有效支持大量細粒度的對象。 2、demo 50 種男式內衣和50 種女士內衣,爲了推銷產品,工廠決定

原创 8、模板方法模式

1、特點 模板方法模式是一種只需使用繼承就可以實現的非常簡單的模式。由兩部分結構組成,第一部分是抽象父類,第二部分是具體的實現子類。通常在抽象父類中封裝了子類的算法框架,包括實現一些公共方法以及封裝子類中所有方法的執行順序。子類通過繼承這

原创 4、迭代器模式

1、特點 迭代器模式是指提供一種方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象的內部表示。迭代器模式可以把迭代的過程從業務邏輯中分離出來,在使用迭代器模式之後,即使不關心對象的內部構造,也可以按順序訪問其中的每個元素。 2、d

原创 3、js數據結構與算法之隊列

1、前言      隊列是一種先進先出(First-In-First-Out,FIFO)的數據結構。隊列被用在很多地方,比如提交操作系統執行的一系列進程、打印任務池等,一些仿真系統用隊列來模擬銀行或雜貨店裏排隊的顧客。     隊列的兩種

原创 7、組合模式

1、特點 組合模式是用小的子對象來構建更大的對象,而這些小的子對象本身也許是由更小的“孫對象”構成的。 2、demo 目前的萬能遙控器,包含了關門、開電腦、登錄QQ 這3 個命令。現在我們需要一個“超級萬能遙控器”,可以控制家裏所有的電器

原创 3、代理模式

1、特點 代理模式是爲一個對象提供一個代用品或佔位符,以便控制對它的訪問。代理模式是一種非常有意義的模式,在生活中可以找到很多代理模式的場景。比如,明星都有經紀人作爲代理。如果想請明星來辦一場商業演出,只能聯繫他的經紀人。經紀人會把商業演

原创 前言

本專欄是學習《JavaScript設計模式與開發實踐》筆記和總結,裏面的demo也是來源《JavaScript設計模式與開發實踐》。 序號 模式 特點 demo 1 單例模式 保證一個類僅有一個實例,並提供一個訪問它的全局訪問點 de

原创 5、發佈—訂閱模式

1、特點 發佈—訂閱模式又叫觀察者模式,它定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都將得到通知。在JavaScript 開發中,我們一般用事件模型來替代傳統的發佈—訂閱模式。 2、demo 訂閱房子

原创 2、策略模式

1、特點 定義一系列的算法,把它們一個個封裝起來,並且使它們可以相互替換 2、demo 使用策略模式計算獎金 //策略模式 //策略模式的定義是:定義一系列的算法,把它們一個個封裝起來,並且使它們可以相互替換。 //使用策略模式計算獎

原创 1、單例模式

1、特點 保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。 單例模式是一種常用的模式,有一些對象我們往往只需要一個,比如線程池、全局緩存、瀏覽器中的window 對象等。 2、實現單例模式 var Singleton = func

原创 11、中介者模式

1、特點 解除對象與對象之間的緊耦合關係。增加一箇中介者對象後,所有的相關對象都通過中介者對象來通信,而不是互相引用,所以當一個對象發生改變時,只需要通知中介者對象即可。中介者使各對象之間耦合鬆散,而且可以獨立地改變它們之間的交互。中介者

原创 6、命令模式

1、特點 命令模式是最簡單和優雅的模式之一,命令模式中的命令(command)指的是一個執行某些特定事情的指令。命令模式最常見的應用場景是:有時候需要向某些對象發送請求,但是並不知道請求的接收者是誰,也不知道被請求的操作是什麼。此時希望用

原创 13、狀態模式

1、特點 允許一個對象在其內部狀態改變時改變它的行爲,對象看起來似乎修改了它的類。 2、demo 電燈的開、亮度、關 // OffLightState: var OffLightState = function(light) {