1
我和朋友正在討論一個簡單命令處理器的設計 - 接受字符串命令,分割它並查找關鍵字(添加,減去等),執行這些命令並返回結果。到現在爲止還挺好。不同模式的命令處理器的設計模式
但是現在如果想要命令處理器處於不同模式(複雜模式,實模式等)時相同的命令以不同的方式工作。
在這裏可以使用哪種設計模式,請記住,未來應該很容易添加更多關鍵字和模式?
我和朋友正在討論一個簡單命令處理器的設計 - 接受字符串命令,分割它並查找關鍵字(添加,減去等),執行這些命令並返回結果。到現在爲止還挺好。不同模式的命令處理器的設計模式
但是現在如果想要命令處理器處於不同模式(複雜模式,實模式等)時相同的命令以不同的方式工作。
在這裏可以使用哪種設計模式,請記住,未來應該很容易添加更多關鍵字和模式?
關於設計模式的好處是它們的名字描述了他們解決的問題。所以,你應該檢查Command pattern。
Command模式是其中一個目的是用來表示和封裝在稍後的時間調用 方法所需的所有信息 行爲的設計模式。該信息包括方法名稱, 對象,該對象擁有方法參數的方法和值。
命令模式由命令,接收器,調用者和客戶端組成。
模式對象對你來說特別有趣,因爲你想添加執行模式。
Invoker對象保存有關命令執行的信息,並且有責任爲命令執行不同的模式。
當谷歌搜索時,我確實遇到過命令模式,但不知道如何包含模式。你建議每個命令都應該實現每個模式,然後調用者對象使用一個if else梯子來處理處理器所在的chick whick模式並執行命令obect中的一個方法?但是我想避免使用其他梯子,因爲添加更多模式變得不方便。你能詳細介紹一下模式嗎? – user3194749
對於每種模式創建類:模式1,模式2等。對於每個模式類執行執行功能的命令。 class command {void execute(Mode1 m1); void execute(Mode2 m2); ...}使用命令和模式對象invoke.process(command,mode1)調用invoke對象。並且內部處理函數調用適當的命令模式:execute(mode1)。你會避免if-s和重載的情況。 – user987339