命令模式(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...