JAVA設計模式-Command

Command模式就像linux的shell命令一樣,輸入一條命令,它就能執行相應的操作。例如,我們想要打開電視機,我們不需要用tv.turnOn()這樣的方法來打開,而是類似command.exe("turn on the TV")這樣的語句。把命令封裝起來有一個好處,我們可以記錄下執行過哪些命令,在什麼時間執行的,是誰執行的。當然,不使用命令模式也可以實現這樣的功能,我們只需要在類似tv.turnOn()這個方法內部加上log就行了,或者是我們在客戶端加上log。雖然這是一個解決方案,但是不是最好的,因爲它違背了JAVA設計原則中的類只實現跟自己相關的功能,也就是說記錄log不是tv這個類該做的,也不是客戶端該做的,那麼應該怎麼辦呢。下面是一個代碼的示例:

 

   

 

    在這個例子裏面,個各類只做了與自己相關的工作,Control這個類負責接收客戶端的命令,然後來執行這個命令,在執行的時候,它記錄了正在執行的是什麼命令。在這個例子裏面,客戶端傳給Control的是一個命令的對象,實際上客戶端直接傳一個命令的字符串給Control也是可以的,然後Control這個類去分析這個字符串,然後在調用相應的命令對象向去執行,這樣,客戶端的代碼就會更加容易。上述代碼的執行結果如下:

 

    command:Trun On the TV
    command:Change Channel, now TV channel is 2
    command:Trun Off the TV

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章