定義:
將乙個請求封裝成物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求的日誌,可以提供命令的撤銷和恢復功能。
通用類圖如下:
通用**如下:
//命令接受者
public abstract class receiver
public class concretereceiver1 extends receiver
}
public class concretereceiver2 extends receiver
}
//此處設定的是每個命令都有乙個命令接受者,具體的接受者由其子類去指定
public abstract class command
public abstract void execute();
}
public class concretecommand1 extends command
//可以自己設定接受者
public concretecommand1(receiver receiver)
@override
public void execute()
}
public class concretecommand2 extends command
//還可以自己設定接受者
public concretecommand2(receiver receiver)
@override
public void execute()
}
//命令發出者
public class invoker
public void action()
}
public class client
}
命令模式優點:
1、類間解耦
呼叫者角色和接受者角色之間沒有任何依賴關係,呼叫者實現功能只需通過command抽象類的execute()方法就可以,不需要了解到底是哪個接受者執行。
2、可擴充套件性
command子類可以非常容易的擴充套件
命令模式的缺點:
缺點就是當command的子類非常多時,那麼這個類就會變得非常的膨脹,需慎用。
《設計模式》學習筆記 命令模式
命令模式 command pattern 是一種資料驅動的設計模式,它屬於行為型模式。請求以命令的形式包裹在物件中,並傳給呼叫物件。呼叫物件尋找可以處理該命令的合適的物件,並把該命令傳給相應的物件,該物件執行命令。意圖 將乙個請求封裝成乙個物件,從而使您可以用不同的請求對客戶進行引數化。主要解決 在...
設計模式學習筆記 命令模式
我對命令模式的理解是用乙個命令物件 command 包裝乙個真正需要執行的物件 x x代表不同物件 而對於要執行x物件的invoker物件來說。它不關x物件是誰,繼承了誰,也不關心要執行這個x物件中的那些方法,因為物件x千萬個,方法更是千萬個,invoker關心不過來。所以invoker想了乙個辦法...
學習筆記 Java設計模式 命令模式
最近做開發發現自己 邏輯混亂,覺得有必要重溫下設計模式。於是就翻到了終點大神的部落格在這裡記錄下自己的學習後的理解。命令模式 命令模式的主要目的,用官話來說,是將呼叫者與執行者解耦。將 結構劃分為呼叫者 命令 執行者三個部分。其中,執行者作為命令的屬性被設定,因此,也可以理解為呼叫者 命令 執行者 ...