C# 任务通知系统的设计模式

C# 任务通知系统的设计模式,c#,design-patterns,observer-pattern,command-pattern,C#,Design Patterns,Observer Pattern,Command Pattern,我正在寻找一个好的设计模式,它结合了观察者设计模式和命令设计模式 观察者设计模式: 主题-ISystem 具体主题-“不同类型的系统” 观察者-诱导剂 ConcreteObserver-“不同类型的通知程序” 命令设计模式:用于创建任务。“不同类型的任务” 如果有人知道我可以使用任何好的资源,或者已经做了一些与我正在寻找的相关的事情,请分享 我取决于你要解决的问题 命令设计模式:用于创建任务。“不同类型的任务” 如果您需要处理不同任务的设计模式,我建议使用状态模式。 我曾经使用可观察模式和状

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

观察者设计模式:

  • 主题-ISystem
  • 具体主题-“不同类型的系统”
  • 观察者-诱导剂
  • ConcreteObserver-“不同类型的通知程序”
命令设计模式:用于创建任务。“不同类型的任务”


如果有人知道我可以使用任何好的资源,或者已经做了一些与我正在寻找的相关的事情,请分享

我取决于你要解决的问题

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

如果您需要处理不同任务的设计模式,我建议使用状态模式。 我曾经使用可观察模式和状态模式来实现VoIP应用程序,它对于特定的问题非常有效,例如根据当前状态生成不同的任务


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

使用命令模式的原因之一是支持命令队列、挂起和撤消/重做。如果您的应用程序需要此类功能,则可以将命令模式与观察者模式中的观察者相结合

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

用户选择预定义任务并根据所选任务自动发送通知。例:检查文件步骤1。用户1-上传文件2。使用前端GUI 3将文件保存到数据库中。向用户2发送电子邮件以检查文件4。用户2检查文件并填充缺少的部分5。用户2保存更改并完成文件。案例1:我希望上传文件后立即自动启动步骤3。案例2:用户选择要完成的任务,根据选择的任务,将向需要处理该任务的最终用户发送正确的通知案例1:听起来标准的可观察模式应该可以做到这一点。案例2:如果任务类型数量有限,例如,如果您可以使用多态性将不同的任务定义为对象,那么您可以拥有一个根据可观察类型发送通知的观察者。