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

时间:2018-02-22 05:09:31

标签: email design-patterns push-notification notifications

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

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

    任何建议?

    6 个答案:

    答案 0 :(得分:1)

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

    tutsplus design ptterns

    designpatternsphp

    答案 1 :(得分:1)

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

    答案 2 :(得分:1)

    策略模式:

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

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

    答案 3 :(得分:1)

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

    答案 4 :(得分:1)

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

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

    答案 5 :(得分:1)

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

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

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

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