9 命令模式

2021-10-22 21:36:20 字數 1450 閱讀 2434

命令模式是一種高內聚的模式

定義:將乙個請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能

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...