任务通知系统的设计模式

时间:2014-02-24 19:32:04

标签: c# design-patterns observer-pattern command-pattern

我正在寻找一个好的设计模式,它结合了观察者设计模式和命令设计模式。

观察者设计模式:

  • 主题 - ISystem
  • ConcreteSubject - “不同类型的系统”
  • 观察员 - INotifier
  • ConcreteObserver - “不同类型的通知者”

命令设计模式:用于创建任务。 “不同类型的任务”

如果有人知道我可以使用的任何好资源或已经做了一些与我想要的相关的事情请分享?

2 个答案:

答案 0 :(得分:0)

我取决于您要解决的问题。

  

命令设计模式:用于创建任务。 “不同类型的任务”

如果你需要一个设计模式来处理不同的任务我会采用状态模式。 我曾经使用可观察模式结合状态模式实现VoIP应用程序,它对于该特定问题非常有用,例如根据当前状态执行不同的任务。

请给我们一个你需要解决的问题的更具体的例子,不同的模式解决不同的问题:)

答案 1 :(得分:0)

使用命令模式的原因之一是支持命令队列,pending和undo / redo。如果您的应用程序需要此类功能,则可以将命令模式与观察者模式中的观察者结合使用。

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);
    }
};