我的服务器上运行了一个webapp,它进行了一些 balance 更新。更新余额后,我需要检查余额是否低于5000.如果余额低于5000,我应该< strong>发送电子邮件提醒。这里需要注意的是,我需要每天只发送一次警告 ,每次余额低于5000时警报都不应该继续。 我相信,我应该使用单例模式发送邮件,但我不知道如何使用它。 当程序看到余额低于5000时,应该调用单例类,它将具有发送电子邮件警报的功能,但是如何确保程序在余额下降时不再调用此函数? 任何人都可以指导我吗?
答案 0 :(得分:1)
singleton pattern是一种设计模式,它将类的实例化限制为一个对象。当需要一个对象来协调整个系统的操作时,这非常有用。
但是根据您的要求,我不知道它是否会有所帮助。也许你可以使用一些旗帜概念。并且每天应该清除旗帜。
答案 1 :(得分:0)
Singleton是一种设计模式,可确保只创建一个对象实例。
听起来与您需要的内容没有任何关系,您可以在数据库中添加一个标记,如alert_sent=true/false
并相应地更新。
答案 2 :(得分:0)
答案 3 :(得分:0)
这里不需要任何“特殊”设计模式。例如,您可以存储上次发送电子邮件通知的日期,例如:
Date lastEmail = ... // last email date
当试图发送电子邮件时,条件是:
If( ... ) // lastEmail is before current day
{ //send emal and update lastEmail }
答案 4 :(得分: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();
}
}
}