天天看點

設計模式總結之Command Pattern(指令模式)目錄 Command Pattern(指令模式)

目錄

  • 設計模式分類

建立型設計模式:

  • Singleton Pattern(單例模式)   
  • Prototype Pattern(原型模式)
  • Factory Method Pattern(工廠方法模式)   
  • Abstract Factory Pattern(抽象工廠模式)
  • Builder Pattern(建造者模式)

結構型設計模式:

  • Adapter Pattern(擴充卡模式)   
  • Bridge Pattern(橋接模式)
  • Composite Pattern(組合模式)
  • Decorator Pattern(裝飾者模式)
  • Façade Pattern(外觀模式)
  • Flyweight Pattern(享元模式)
  • Proxy Pattern(代理模式)   

行為型設計模式:

  • Chain of Responsibility Pattern(職責鍊模式)
  • Command Pattern(指令模式)
  • Interpreter Pattern(解釋器模式)   
  • Iterator Pattern(疊代器模式)
  • Mediator Pattern(中介者模式)
  • Memento Pattern(備忘錄模式)
  • Observer Pattern(觀察者模式)
  • State Pattern(狀态模式)
  • Strategy Pattern(政策模式)
  • Template Method Pattern(模闆方法模式)
  • Visitor Pattern(通路者模式)

Command Pattern(指令模式)

别名:動作(Action),事務(Transaction)

意圖 

将一個請求封裝為一個對象,進而使你可用不同的請求對客戶進行參數化;對請求排隊。

适用性

1. 系統需要将請求調用者和請求接收者解耦,使得調用者和接收者不直接互動。

2. 系統需要在不同的時間指定請求、将請求排隊和執行請求。

3. 系統需要支援指令的撤銷(Undo)操作和恢複(Redo)操作。

4. 系統需要将一組操作組合在一起,即支援宏指令。

結構

設計模式總結之Command Pattern(指令模式)目錄 Command Pattern(指令模式)

角色如下:

Command:

定義指令的接口,聲明執行的方法。

ConcreteCommand:

指令接口實作對象,是“虛”的實作;通常會持有接收者,并調用接收者的功能來完成指令要執行的操作。

Receiver:

接收者,真正執行指令的對象。任何類都可能成為一個接收者,隻要它能夠實作指令要求實作的相應功能。

Invoker:

要求指令對象執行請求,通常會持有指令對象,可以持有很多的指令對象。這個是用戶端真正觸發指令并要求指令執行相應操作的地方,也就是說相當于使用指令對象的入口。

Client:

建立具體的指令對象,并且設定指令對象的接收者。注意這個不是我們正常意義上的用戶端,而是在組裝指令對象和接收者,或許,把這個Client稱為裝配者會更好了解,因為真正使用指令的用戶端是從Invoker來觸發執行。

例子

設計模式總結之Command Pattern(指令模式)目錄 Command Pattern(指令模式)

有撤銷功能的指令:

設計模式總結之Command Pattern(指令模式)目錄 Command Pattern(指令模式)
設計模式總結之Command Pattern(指令模式)目錄 Command Pattern(指令模式)

優缺點

> 優點

1.降低對象之間的耦合度。

2.新的指令可以很容易地加入到系統中。

3.可以比較容易地設計一個組合指令。

4.調用同一方法實作不同的功能

> 缺點

使用指令模式可能會導緻某些系統有過多的具體指令類。因為針對每一個指令都需要設計一個具體指令類,是以某些系統可能需要大量具體指令類,這将影響指令模式的使用。

繼續閱讀