設計模式隨筆 命令模式

2021-07-24 04:55:33 字數 2766 閱讀 5370

封裝呼叫方法,命令模式能夠把方法呼叫封裝到乙個起來。這樣,命令方法就不用在乎方法內部是做什麼的了,只需要關心封裝的過程,是開還是關閉某些東西。

它能做記錄日誌,或者撤銷等。

現在我們有乙個需求,就是幫家電廠商設計乙個遙控器,這個遙控器有4個鏈結裝置的開關,和乙個撤銷按鈕。如下圖所示:

現在我們看看廠商的家電類有什麼特徵:

首先我們要建立乙個命令介面,是介面模式的基礎:

public

inte***ce command

所有命令物件都要包含實現execute這個方法,下面我們來實現乙個light()物件的開,命令物件吧。

public

class

lightoncommand

implements

command

@override

public

void

execute()

}

這是乙個light物件的(開)命令物件。完成了第乙個命令物件之後,我們來看看怎麼使用該命令物件吧。假設我們有乙個簡單的遙控控制器,它只對應乙個按鈕和乙個插槽。

public

class ******remotecontrol

public

void

setcommand(command command)

//按下按鈕的動作

public

void

buttonwaspressed()

}

命令模式:將「請求」封裝成物件,以便使用不同的請求、佇列或者日誌來引數化其他物件。命令模式也支援可撤銷的操作。

命令模式的基礎模型:

undo()方法在下面設計更複雜的命令模式的時候會講到。

下面是能夠控制7個家電裝置和乙個撤回按鈕的遙控器的**:

public

class remotecontrol

undocommand = command;

}public

void

setcommand(int slot, command oncommand, command offcommand)

public

void

onbuttonwaspushed(int slot)

public

void

offbuttonwaspushed(int slot)

@override

public string tostring()

}

下面是點燈開的命令:

public

class

lightoncommand

implements

command

@override

public

void

execute()

@override

public

void

undo()

}

點燈關的命令:

public

class

lightoffcommand

implements

command

@override

public

void

execute()

@override

public

void

undo()

}

繼承common的命令:

public

inte***ce command

undo就是命令的撤銷方法,就像點燈的開命令,那麼他的撤銷功能當然是點燈的關啦。

燈物件:

public

class light

public

void

off()

}

測試方法:

public

void

test2()

system.out.println(remotecontrol);

remotecontrol.onbuttonwaspushed(1);

remotecontrol.offbuttonwaspushed(1);

}

命令可以將運算塊打包,然後將它傳來傳去,就像是一般的物件一樣。現在,即使在命令物件被呼叫之後,運算依然可以被呼叫

假設當前有乙個命令佇列,從一端新增需要完成的工作命令,在另一端是乙個執行緒,負責取出執行緒,執行execute()方法。

命令模式:將請求封裝為物件,這可以讓你使用不同的請求、佇列、或者日誌請求來引數化其他物件。命令模式也支援撤銷操作。

設計模式隨筆

設計模式是為了讓程式,具有更好的 重用性 可讀性可擴充套件性 可靠性使程式呈現高內聚低耦合 單一職責原則 介面隔離原則 依賴倒轉原則 黎克特制替換原則 開閉原則 迪公尺特法則 合成復用原則 1.餓漢式 靜態常量 步驟 構造器私有化 防止new 類的內部建立物件 向外暴露乙個靜態的公共方法 實現 pu...

隨筆 設計模式 工廠模式

工廠模式和抽象工廠模式是在日常開發中使用非常廣泛的設計模式。主要用於實現將物件的例項化部分取出來,進而優化系統架構,增強系統的擴充套件性。用工廠方法來代替 new 操作 工廠模式包括工廠方法模式和工廠抽象模式 抽象工廠模式是工廠方法模式的擴充套件 1 定義乙個介面來建立物件,讓子類來決定哪些類需要被...

設計模式隨筆 單件模式

單件模式是可以用來建立獨一無二的,只能有乙個的物件。單件模式的類圖可以說是最簡單的,事實上它的類圖只有乙個類,但是也不要把它想的那麼簡單,因為它也是需要很多限制才能夠安全的執行起來。首先我們來看乙個經典的單件模式的 public class singleton public static singl...