命令模式是一種高內聚的模式
定義:將乙個請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能
receive接受類:就是負責幹活的類,命令傳遞到這裡是應該被執行的
command命令類:需要執行的命令都在這裡宣告
invoker呼叫類:接收到命令,並且執行
命令模式比較簡單,但是在專案中使用的很頻繁,因為其封裝性很好,並將請求方和執行方所分離,擴充套件性也得到了保證
//抽象receiver類
public
abstract
class
receiver
//具體receive類 接收者可以是多個
public
class
concretereceiver1
extends
receiver
}public
class
concretereceiver2
extends
receiver
}//抽象命令command類 命令類是命令模式的核心
public
abstract
class
command
//具體命令command類
public
class
concretecommand1
extends
command
//必須實現乙個命令
public
void
execute()
}public
class
concretecommand2
extends
command
//必須實現乙個命令
public
void
execute()
}//呼叫類invoke
public
class
invoker
//執行命令
public
void
action()
}//場景類
public
class
client
}
類間解耦:呼叫類和接受類之間沒有任何耦合關係,呼叫類實現功能時只需要呼叫command抽象類中的execute方法就可以,不用在意到底是哪個接受類執行
可擴充套件性:command子類非常易於擴充套件,而呼叫者invoker和更高層次的client不會產生嚴重的**耦合
命令模式可以結合其他模式:例如責任鏈模式,模板方法模式等
如果存在多個命令,command的子類就會變得很多,類會膨脹的很大
只要你認為是命令的地方就可以採用命令模式
9 命令模式
命令模式是乙個高內聚的模式,其定義為 encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and suppo...
設計模式9 命令模式
命令模式 將乙個請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷 和恢復功能。三個角色 1 receive接收者角色 2 command命令角色 3 invoker呼叫者角色。抽象命令類 public abstract class comman...
9 策略模式
思考 如果想增加取模運算又如何操作?想一想簡單工廠方法,是否有些相似?又有哪些不同?通過介面,隔離封裝 通過繼承,適應變化 工廠模式,我們著眼於得到物件,並操作物件,策略模式,我們著重得到物件某方法的執行結果 inte ce math class mathadd implements math cl...