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

问题描述 投票:1回答:6

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

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

    有什么建议?

    email design-patterns push-notification notifications
    6个回答
    1
    投票

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

    tutsplus design ptterns

    designpatternsphp


    1
    投票

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


    1
    投票

    策略模式:

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

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


    1
    投票

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


    1
    投票

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

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


    1
    投票

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

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

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

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

    © www.soinside.com 2019 - 2024. All rights reserved.