設計模式(14) 命令模式

2021-09-10 18:59:38 字數 1615 閱讀 2120

命令模式(command pattern)是一種資料驅動的設計模式,它屬於行為型模式。請求以命令的形式包裹在物件中,並傳給呼叫物件。呼叫物件尋找可以處理該命令的合適的物件,並把該命令傳給相應的物件,該物件執行命令。

首先先定義乙個command介面

inte***ce command

再定義幾個command的實現類

class circle : command

}class ring : command

}

定義乙個封裝類

class invoke

public void addcommand(command command)

public void executecommand()}}

呼叫

class program

}

結果

執行圓

執行圓環

首先修改command介面,增加乙個undo方法

inte***ce command

增加comand介面實現類的undo方法

class circle : command

public void undo()

}class ring : command

public void undo()

}

修改封裝類

class invoke

public void executecommand(command command)

// 執行新操作後清空redolist,因為這些操作不能恢復了

redolist.clear();

}public void undo()

command cmd = undolist[undolist.count - 1];

cmd.undo();

undolist.remove(cmd);

redolist.add(cmd);

}public void redo()

command cmd = redolist[redolist.count - 1];

cmd.execute();

redolist.remove(cmd);

undolist.add(cmd);}}

修改呼叫

class program

}

結果

執行圓

執行圓環

撤銷圓環

執行圓環

撤銷圓環

撤銷圓執行圓

執行圓環

命令模式的優點:

命令模式的缺點:

設計模式(14) 命令模式

命令模式,用來對請求的傳送者和請求的接收者進行解耦的一種設計模式,為什麼叫命令模式呢?因為在應用該模式時,引入了乙個命令物件。命令模式有三個角色,請求傳送者,命令物件,請求的接收者 處理者 誰來給請求傳送者和接收者解耦呢,命令物件,所以我們一思考就知道命令模式應該是這樣的 請求傳送者傳送請求,為了增...

設計模式(14) 命令模式

原理類圖 對原理類圖的說明 即 命令模式的角色及職責 package com.lm.command 建立命令介面 public inte ce command package com.lm.command public class lightreceiver public void off pack...

設計模式之組合模式14

迭代器模式pass,因為迭代器模式是在jdk1.2出現iterator時的模式。對於現在用list,map遍歷即可搞定。乙個組織架構圖,上至ceo,下至普通開發人員,有這樣的乙個樹結構,我們用組合模式來實現 將物件抽離為以下幾種 抽象資訊類 public abstract class crop pu...