14.Javascript設計模式之命令模式—-Command

來源:互聯網
上載者:User
14.Javascript設計模式之命令模式----Command

命令Command模式是GOF23種模式中的一種,是一種行為模式。

認識命令模式

在物件導向編程中,大量使用if…else…,或者switch…case…這樣的條件選擇語句是“最差實踐”。通常這類代碼,意味著有重構的餘地。

命令模式就是幹掉條件選擇語句的利器。

通常命令模式的介面中只有一個方法。

實作類別的方法有不同的功能,覆蓋介面中的方法。

開始命令模式 提供一個介面
var ICommand = new Interface("ICommand",["execute"]);
提供一個介面的實作類別

每一個實作類別的方法就是if…else…的一個代碼塊中的代碼。

//下面這個定義了一個開機命令var PowerOnCommand = function(){};implements(PowerOnCommand,ICommand);PowerOnCommand.prototype.execute = function(){    alert("已開機");};

當然了,你還可以定義很多其他的命令來完成你其他的操作,比如關機,

//下面這個定義了一個關機命令var PowerOffCommand = function(){};implements(PowerOffCommand,ICommand);PowerOffCommand.prototype.execute = function(){    alert("已關機");};
executeCommand方法定義
//這裡定義一個執行用命令的方法,方法接受一個參數,即為ICommand介面的實作類別的執行個體var executeCommand = function(command){    command.execute();};
運用命令模式
//開機executeCommand(new PowerOnCommand());//關機executeCommand(new PowerOffCommand());

yes,就這麼簡單的實現了開機和關機的命令模式。

其實你仔細的一想,Windows的各種操作都是基於命令模式的,嘿嘿

當然,命令模式還可以使用其他方式來使用。不一定非用參數回調模式。

命令模式的核心思想是,帶有某個方法的具體類的執行個體,作為介面傳給使用方。對象的具體類型資訊消失。

在使用方代碼中拿到這個介面後調用這個介面的方法。

具體的執行效果,取決的命令發起人提供的對象是哪一個實作類別的。這給了命令發起人完全的控制能力,而使用方代碼不關心具體的命令類和方法。同時也使條件判斷語句成為多餘。

簡單嗎?命令模式其實就是這麼簡單。

估計我說的不夠清楚-_-!!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.