我的java swing应用程序中有5个类,如下所示:
SendEmail.java
StudentRegister.java
StudentLogin.java
TeacherRegister.java
TeacherLogin.java
SendEmail.java的结构如下:
class sendEmail extends Thread
{
public void studentMail(){}
public void teacherMail(){}
}
我想要的是从StudentRegister.java成功注册学生后我想同时指导学生到StudentLogin.java我想发送学生确认邮件,该邮件将由SendEmail.java的studentMail()方法发送类。
我想和老师做同样的事情,但这次发送邮件的方法是不同的,即teacherMail()。
在这里,我不能有一个可以开始执行线程的常用方法run()。如何在执行线程时执行不同的类方法。
答案 0 :(得分:1)
我认为有很多方法可以解决这个问题。一个非常容易实现的方法是使用共享接口和代码来代替您的实现。
interface EmailSender {
void doMail();
}
然后只创建几个实现
class TeacherEmailSender implements EmailSender {
public void doMail() { /* implementation */}
}
class StudentEmailSender implements EmailSender {
public void doMail() { /* implementation */}
}
然后您可以执行类似的操作,然后根据需要设置其实际实现。
EmailSender emailSender;
if (thisIsaStudentRegistration) {
emailSender = new StudentEmailSender();
} else {
emailSender = new TeacherEmailSender();
}
new Thread(() -> { emailSender.doMail(); }).run();
这里有很多选择。根据通知的通用程度,可能适合创建enum
通知类型,然后为注册表类中的那些注册不同的处理程序。
如果学生和教师电子邮件发送课程之间有很多共享功能,您可能会受益于共享部分实施(extend
某些abstract
基类)。
这完全取决于我的假设,即这是一个需要使用线程的类赋值。如果没有,请考虑跳过duffymo提到的并发性。
答案 1 :(得分:1)
我会有一个班级来发送电子邮件。它不关心学生或老师;来自,主题和内容将是唯一重要的事情。
我传递这些值,为Teacher
和Student
生成不同的内容。
在我知道存在性能问题之前,我不担心并发性。您可以很聪明地对其进行编码,使其正常工作,分析性能,然后进行更改以使性能可以接受。