我有一个webapp运行在我的服务器上,它有一些余额更新。一旦平衡更新,我需要检查,如果平衡低于5000的情况下,平衡低于5000,我应该发送警报电子邮件。这里要注意的一点是,我需要在一天内只发送一次一次,每次余额低于5000时警报不应该继续。 我相信,我应该使用单身模式发送邮件,但是我不知道如何使用这个。 程序当看到余额低于5000时,应调用具有发送电子邮件警报功能的单例类,但是如何确保程序在余额下降时不会再次调用该函数? 任何人都可以指导我吗?使用Singleton模式的电子邮件
0
A
回答
0
你还需要考虑两个独立的东西:
- 电子邮件发送服务。
多种方法来实现它。是的,它可能是Singleton,但它也可能是普通的Java服务。如果你使用Spring,那么他们有非常简单和有用的预定义实现。这是一个example。
- 你的支票余额逻辑。
取决于你真正需要的。如果您需要检查每一个资产负债更新,但发送警报不多于每天一次,那么这将是这样的:
private Date lastAlertDate;
private static final BALANCE_LIMIT = 5000;
private void handleBalanceUpdated(long balance) {
if (balance < 5000) {
log.info("Balance has gone below {}", BALANCE_LIMIT);
int daysDifference = getDifferenceInDays(lastAlertDate, new Date());
if (daysDifference >= 1) {
log.info("Last alert was {} days ago, going to send email alert", daysDifference);
alertService.sendSimpleAlert("Balance has gone below " + BALANCE_LIMIT + "!");
lastAlertDate = new Date();
}
}
}
0
Singleton是一种设计模式,确保只创建一个对象的一个实例。
不听起来像它有什么关系,你需要什么,你可以在你的数据库中添加一个标志像alert_sent=true/false
并相应地更新它。
0
1
singleton pattern是限制一个类的实例化到一个对象的设计模式。当需要确切的一个对象来协调整个系统的操作时,这非常有用。
但对于您的要求,我不知道可以它将帮助。也许你可以使用一些国旗的概念。国旗应该每天清除。
0
您不需要任何“特殊”设计模式。例如,你可以存储在最后一封电子邮件,通知发送,例如日期:
Date lastEmail = ... // last email date
,并试图发送电子邮件时chekc条件:
If(...) // lastEmail is before current day
{ //send emal and update lastEmail }
相关问题
- 1. ASP.NET电子邮件模式
- 2. 模板电子邮件的最佳电子邮件方式
- 3. 使preg_split电子邮件模式
- 4. .NET C#电子邮件:使用电子邮件模板
- 5. 使用XSLT的电子邮件模板
- 6. Salesforce的 - 电子邮件模板使用
- 7. Bootstrap模式电子邮件形式
- 8. 电子邮件模式的说明
- 9. 对电子邮件使用lodash ._模板
- 10. Razor将电子邮件模板作为电子邮件模板
- 11. Mailchimp像电子邮件模板个人电子邮件/交易电子邮件
- 12. Facebook电子邮件订阅模式
- 13. 页面/电子邮件内容模式
- 14. 响应式电子邮件模板
- 15. 电子邮件输入模式属性
- 16. 使用PHP_XLSXWriter向电子邮件格式化的数据发送电子邮件
- 17. 使用PHP,html格式的电子邮件确认电子邮件
- 18. VBA验证使用模式的电子邮件列表
- 19. 建议使用javaScript验证电子邮件的良好模式?
- 20. 使用send_dbmail发送电子邮件表中的电子邮件
- 21. 使用sha256计算电子邮件散列的电子邮件
- 22. 添加电子邮件的模板与电子邮件js
- 23. 使用电子邮件模板在SuiteScript 1.0中发送电子邮件?
- 24. 如何使用自定义电子邮件模板发送电子邮件
- 25. PHP的形式不电子邮件发送电子邮件
- 26. 使用Powershell查找模式并发送电子邮件
- 27. 使用twitter-bootstrap模式,json和wordpress发送电子邮件
- 28. 电子邮件使用C#
- 29. 电子邮件::使用UTF8
- 30. 使用电子邮件
请尝试使用的东西下面的答案,如果你面对任何问题,试图得到帮助... ... – sunleo