設計模式 命令模式

2021-08-21 01:39:10 字數 1395 閱讀 7166

先來一波命令模式的定義:在軟體設計中,我們經常會遇到某些物件傳送請求,然後某些物件接受請求後執行,但傳送請求的物件可能並不知道接受請求的物件是誰,執行的是什麼動作。此時可通過 命令模式 來實現,讓傳送者和接受者完全的松耦合,這樣可大大增強程式的靈活性。接著看一下uml類圖。

舉個例子來詳細說明一下,以head first中的命令模式為例。假設現在有遙控器,要控制大廳的燈,大廳的音響,房間的空調。你當然可以讓遙控器來直接控制它們,但是如果這樣的話,你就得考慮不同的實現了,因為燈,音響都是不一樣的,以後也會出現其他的電器,那麼為了解耦,就只是讓遙控器間接地控制它們。與上面的類圖進行對應的話

(1)invoker:遙控器

(2)command:遙控器的按鈕

(3)receiver:實際接受的物件(比如燈、音響)

(4)concreatecommand:具體的按鈕(開燈鍵、關燈鍵)

//所有按鈕的超類

public inte***ce command

//開燈

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()

}//具體被操作的物件

public class light

public void off()

}//遙控器

public class remote

public void setcommand(int index,command oncommand,command offcommand)

public void onbutton(int index)

public void offbutton(int index)

public void undo()

}//測試**

public static void main(string args)

這裡只舉出了乙個燈的例項,其他的都是類似的。

總結一下,重要的是思想,讓命令的接受者和實際的被控制者之間多一層控制者,讓接受者不必過多的去思考被控制者的實現,而只去呼叫控制者的api即可控制,真正的控制是在控制者這一步做到的。這樣可以更好地拓展。

設計模式 命令設計模式

一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...

設計模式 命令模式

1 命令模式的角色組成 1 命令角色 command 生命執行操作的介面。介面或抽象類來實現。2 具體命令角色 concrete command 將乙個接收者物件繫結於乙個動作 呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。3 客戶角色 client 建立乙個具體命令物件 並可以設定它的...

設計模式 命令模式

1 command.h ifndef command h define command h include include include using namespace std class chef 廚師,具體命令的執行者 class command 命令基類 class makemuttonco...