~~~~~~~
命令模式是最簡單和優雅的模式之一,命令模式中的命令(command)指的是乙個執行某些特定事情的指令。
~~~~~~~
命令模式最常見的應用場景是:有時候需要向某些物件傳送請求,但是並不知道請求的接收者是誰,也不知道被請求的操作是什麼。此時希望用一種松耦合的方式來設計程式,使得請求傳送者和請求接收者能夠消除彼此之間的耦合關係。
~~~~~~~
巨集命令
巨集命令是一組命令的集合,通過執行巨集命令的方式,可以一次執行一批命令。想象一下,家裡有乙個萬能遙控器,每天回家的時候,只要按乙個特別的按鈕,它就會幫我們關上房間門,順便開啟電腦並登入 qq。
下面我們看看如何逐步建立乙個巨集命令。首先,我們依然要建立好各種 command
var closedoorcommand =
};var openpccommand =
};var openqqcommand =
};
接下來定義巨集命令 macrocommand ,它的結構也很簡單。 macrocommand.add 方法表示把子命令新增進巨集命令物件,當呼叫巨集命令物件的 execute 方法時,會迭代這一組子命令物件,並且依次執行它們的 execute 方法:
var macrocommand = function () ,
execute: function () }}
};var macrocommand = macrocommand();
macrocommand.add(closedoorcommand);
macrocommand.add(openpccommand);
macrocommand.add(openqqcommand);
macrocommand.execute();
~~~~~~~
當然我們還可以為巨集命令新增撤銷功能,跟 macrocommand.execute 類似,當調macrocommand.undo 方法時,巨集命令裡包含的所有子命令物件要依次執行各自的 undo 操作。巨集命令是命令模式與組合模式的聯用產物
智慧型命令:「聰明」的命令物件可以直接實現請求,這樣一來就不再需要接收者的存在,
傻瓜命令:它只負責把客戶的請求轉交給接收者來執行,這種模式的好
處是請求發起者和請求接收者之間盡可能地得到了解耦。
JS設計模式 命令模式
命令模式 command pattern 是一種資料驅動的設計模式,它屬於行為型模式。請求以命令的形式包裹在物件中,並傳給呼叫物件。呼叫物件尋找可以處理該命令的合適的物件,並把該命令傳給相應的物件,該物件執行命令。我們要做乙個簡單的編輯器,先來看看沒有使用命令模式的 忽略定義方法意義所在 class...
js設計模式之命令模式
命令模式就是將建立模組的邏輯封裝在乙個物件裡,這個物件提供乙個引數化的請求介面,通過呼叫這個介面並傳遞一些引數實現呼叫命令物件內部中的方法。現在我們需要做乙個活動頁面,平鋪結構,比如每個預覽產品區域,有一行標題,標題下面是產品,只是數量和排列不同。模組實現模組 var viewcommand fun...
JS 設計模式 策略模式
策略模式指的是定義一系列的演算法,把它們乙個個封裝起來。將不變的部分和變化的部分隔開是每個設計模式的主題,策略模式也不例外,策略模式的目的就是將演算法的使用與演算法的實現分離開來。可以很好的替換if else混亂的 var strategies a function salary b functio...