2014-02-24 46 views
0

我在尋找一種很好的設計模式,它需要Observer設計模式和命令設計模式的組合。任務通知系統的設計模式

Observer設計模式:

  • 主題 - ISYSTEM
  • ConcreteSubject - 「系統的不同類型」
  • 觀察 - INotifier
  • ConcreteObserver -
「通告的不同類型」

命令設計模式:用於創建任務。 「不同類型的任務」

如果有人知道任何好資源我可以使用或已經做了一些有關我正在尋找的東西請分享?

回答

0

我依賴於您嘗試解決的問題。

命令設計模式:用於創建任務。 「不同類型的任務」

如果你需要一個設計模式來處理不同的任務,我會消化狀態模式。 我曾經使用可觀察模式與狀態模式一起實現了VoIP應用程序,它對那個特定問題非常有效,例如根據當前狀態執行不同的任務。

請給我們您需要解決的問題的一個更具體的例子,不同的模式解決不同的問題:)

+0

用戶選擇預定義任務並根據所選任務自動發送通知。 前:檢查文件 步驟 1.用戶1 - 上傳文件 2.節約使用前端界面 3.發送電子郵件至用戶2,檢查文件 4.用戶將文件放入數據庫2個檢查文件和填補缺少的部分 5.用戶2保存更改和文件完成 案例1:我想第3步自動啓動文件上傳。情況2:用戶選擇一個任務完成,並根據選擇的任務,正確的通知將發送給需要處理任務的最終用戶 – user3324364

+0

案例1:聽起來像標準的可觀察模式應該做的伎倆。情況2:如果任務類型數量有限,例如,如果可以將不同的任務定義爲對象,可能使用多態,那麼您可以讓觀察者根據可觀察類型發送通知。 – user3151973

0

對使用​​命令模式,支持命令隊列的原因,有待和撤銷/重做。如果您的應用程序需要這樣的功能,您可以將命令模式與觀察者模式內的觀察者結合起來。

class ICommand { 
    virtual void exec() = 0; 
}; 

class SendEmailCommand: public ICommand { 
    void exec() { 
     // send the email 
    } 
} 

class INotifier { 
    virtual void update(Event event) = 0; 
}; 

class ConcreteNotifier: public INotifier { 
    void update(Event event) { 
     ICommand cmd = CommandFactory::CreateCommand(event); 
     push_to_command_queue(cmd); 
    } 
};