在这种情况下我应该使用哪种设计模式:
我想实现更多技术,我不想修改核心,我想只添加模块到系统。例如,添加电报消息,Twitter消息或其他电子邮件提供商。
任何建议?
答案 0 :(得分:1)
答案 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 集成到某个地方,以便排队并按时推送消息。