2014-02-24 98 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); 
    } 
};