我应该在通知系统中使用哪种设计模式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该在通知系统中使用哪种设计模式?相关的知识,希望对你有一定的参考价值。

在这种情况下我应该使用哪种设计模式:

  • 我有一个休息API通知系统。
  • 我可以通过电子邮件通知
  • 通过推送通知;
  • 由WhatsApp通知。
  • 我想实现更多技术,我不想修改核心,我想只添加模块到系统。例如,添加电报消息,Twitter消息或其他电子邮件提供商。

    有什么建议?

    答案

    您解释的案例就像战略设计模式。您可以使用策略设计模式,并为实现接口的每个系统提供接口和类。这些链接可以帮助您:

    tutsplus design ptterns

    designpatternsphp

    另一答案

    对我来说,似乎PUB-SUB模型或观察者模式是最好的,以注册到发布者的订户形式的扩展很好地工作,因为订阅者可以从核心通知服务中抽象出他们自己的实现细节。

    另一答案

    策略模式:

    定义一系列算法(您的通知类型),封装每个算法(每种类型的通知),并使它们可互换(使用通用抽象)。策略允许算法独立于使用它的客户端。捕获接口中的抽象,将实现细节隐藏在派生类中。

    每次要添加不同类型的通知时,您都会添加新策略(Twitter,Telegram,ecc)

    另一答案

    对于通知系统,我建议您使用Observer模式。您收到的消息应该在您的Subject内。主体应允许任何数量的Observers附加。收到消息后,主题应通知所有观察者。然后Observers可以从主题中读取状态/消息并对其进行操作。我对你的用例并不十分清楚。但这可以做到这一点。

    另一答案

    观察者 - 可观察的模式适合你。如果你使用在期货中构建的任何框架(java中的spring) - 比如事件监听器和发布者 - 这确实减少了你的实现负担。

    我希望你已经在使用框架 - 所以研究事件监听器+发布者。它真的解决了你的问题..不仅增强了对多个供应商的支持..它还支持 - 单一 - 多线程,更改少。

    另一答案

    根据您的问题陈述,将涉及两种不同类型的设计模式:

    1)策略模式:它将根据电子邮件,推送,whatsapp等上下文定义通知策略。

    3)观察者模式:它将执行发布者和订阅者操作​​将松散耦合的行为。它会自动通知订阅者。

    您还可以将RabbitMq集成到某个位置以便按时排队并按时推送消息。

    以上是关于我应该在通知系统中使用哪种设计模式?的主要内容,如果未能解决你的问题,请参考以下文章

    使用哪种声音格式? iOS 通知

    我应该在 DAL 中使用哪种设计模式,同时拥有具有不同模型的多个数据库源?

    用于数据加载的 Android 活动/片段职责

    在 C# 中应该使用哪种设计模式和 WPF 来通过用户界面动态“更改对象的类”?

    在通知单击时启动片段而不会丢失状态

    译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务