「命令模式」詳細分析

2021-10-04 21:13:39 字數 1350 閱讀 7823

答:命令模式是一種行為型的設計模式,為了實現請求者和接收者(執行者)的解耦,將請求的呼叫封裝成乙個命令物件,由命令物件來通知並讓接收者完成相應的任務。

答:命令模式中主要包含了三個物件:

「命令類」--訂單(也就是實現統一命令介面的命令),

「執行者」--廚師(也就是真正執行命令的人),

「命令呼叫者」--服務員(進行命令傳遞的人)

這裡應該先配一張圖

答:先說一下原來的開發方式,傳統的方法呼叫就是直接呼叫,比如:客戶讓廚師做乙個漢堡,那麼他需要新建乙個廚師物件,然後呼叫該物件的建立漢堡,如下

// 廚師類

public class 廚師

}// 客戶類

public class 客戶

}

命令模式就是將 「客戶讓廚師做乙個漢堡」,中的「讓廚師做乙個漢堡」封裝成乙個命令,然後交給服務員(也就是命令呼叫類)去處理,也就變成了 「客戶(請求者)告訴服務員(命令呼叫類)他的訂單:讓廚師做乙個漢堡(命令物件),然後服務員(命令呼叫類)告知廚師(接收者(執行者))這個訂單(命令物件)」,具體實現如下

// 廚師類(接收者/執行者)

public class 廚師

}// 訂單(命令物件的介面)

public inte***ce 訂單

// 建立漢堡的命令(命令物件的實現)

public class 建立漢堡 implements 訂單

public void 執行();

}// 服務員類(命令呼叫者)

public class 服務員

public void 提交訂單()

訂單陣列.clear();

}}// 客戶類

public class 客戶

}

答:傳統方式中,客戶想要漢堡,那麼他需要知道廚師物件中有建立漢堡的方法,而命令模式的是實現是,客戶不再關心廚師物件內部有什麼方法,客戶只需要知道選單上有個建立漢堡的命令,然後告訴服務員我需要呼叫這個命令即可。

簡單說就是,原先呼叫方法需要建立物件來執行方法,而現在可以直接將方法丟出,讓其他程式來幫忙執行方法,降低**耦合度

應用於實踐的地方有很多,比如

當大量的命令需要執行,但是這些命令又對時限沒有要求,此時通過訊息佇列來傳遞命令物件,再由固定數量的執行緒來接收並執行相應的命令,此時執行緒並不需要了解命令物件所執行的操作內容。這是典型的命令模式。

在我們進行事務處理時,經常做的操作就是,將一組命令提交到事務組,再由事務統一提交執行,這就是將命令統一提交執行。

單利模式詳細分析

單利模式 所謂單例模式就是乙個類只能建立乙個例項化。python中的內建函式 new 它跟 init 一樣,都是物件在被建立出來的時候,就自動執行的乙個函式,init 函式,是為了給函式初始化屬性值的,而 new 這個函式,就是為了給物件在被例項化的時候,分配一塊記憶體位址,因此,我們可以重寫 ne...

const詳細分析

最近在分析 linux 驅動的過程過程中遇到一些關於 const 的使用,現在在這裡詳細剖析一下 一,const int p 首先分析一下幾個概念 1 p 是乙個指標變數,因而它也是乙個變數,所謂變數就有變數的位址和變數的值,而這裡 p變數的值就是乙個位址,該位址下存放的是乙個整數,p的值等於這個整...

約數詳細分析

約數詳細分析 我們先來認識一下約數 約數分正約數和負約數兩種,我們一般只討論正約數。也就是說,接下來所提的約數,只考慮正約數。如果有乙個數k,滿足k n,那麼k就是n 的約數 因數 n是k的倍數。求乙個數的約數是資訊學競賽裡乙個基礎的不能再基礎的問題。如果只求乙個數,最容易想到的就是列舉。當然列舉也...