設計模式學習筆記 命令模式

2021-06-06 10:09:49 字數 1323 閱讀 5513

定義:

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

通用類圖如下:

通用**如下:

//命令接受者

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設計模式 命令模式

最近做開發發現自己 邏輯混亂,覺得有必要重溫下設計模式。於是就翻到了終點大神的部落格在這裡記錄下自己的學習後的理解。命令模式 命令模式的主要目的,用官話來說,是將呼叫者與執行者解耦。將 結構劃分為呼叫者 命令 執行者三個部分。其中,執行者作為命令的屬性被設定,因此,也可以理解為呼叫者 命令 執行者 ...