2016-06-02 2 views
3

여기에 수업을 오용하고있는 확률이 있습니다. 그래서 당신의 도움이 필요합니다.절차 적 스타일 코드로 Java 클래스 재사용?

Java EE로 개발을 시작했는데 내가 직면 한 문제 중 하나는 "SendEmail.java"라고하는 클래스에서 구성한 프로세스가 있다는 것입니다.

이제 SendEmails.java 내에있는 모든 메소드를 사용할 "Thunderalert.java"및 "FloodAlert.java"라는 두 개의 클래스가 있다고 가정 해 보겠습니다.

다른 클래스의 SendEmails 메서드를 사용하는 가장 좋은 방법을 알고 싶습니다.

  • 나는 SendEmails의 인스턴스를 생성해야하며, 개별적으로 각각의 방법을 액세스하고 오류가 길을 따라 확인 (예외가 발생 무슨 경우?) .. 그것의 방법은 절차 적 코드, 그래서 그것은 정말 '목적이 아니다 'as such
  • SendMail 내에서 다른 모든 내부 코드를 실행하는 한 가지 방법을 사용하십시오.
  • 이 SendMail을 도우미 클래스 유형 디자인으로 다시 디자인해야합니까?

나는 아직도 내가

+0

코드를 보지 않고 말할 하드에 대한 호출 싶지만, 클라이언트 코드 만 얻을 수있는 하나의 메소드를 호출해야한다 보인다 전자 메일이 발송되었습니다 ("내부 전자 메일"순서에 대해 걱정할 필요가 없음). – Thilo

+0

어떻게 설명했는지에 따라 ThunderAlert와 FloodAlert는 모두 Alert 클래스를 확장해야하고 Alert 클래스는 SendEmail에 대한 모든 구현을 가져야합니다. 'ThunderAlert'와'FloodAlert'는 특정 행동에 관한 정보, 즉 거리를 고려한 천둥 기반 메시지와 수위를 고려한 홍수 경보 만 제공합니다. – Compass

+0

JavaMail API를 사용하지 않는 이유는 무엇입니까? –

답변

1

누락하고 사용할 수있는 옵션은 당신이 SendEmail 클래스 내부에 하나의 공용 방법을해야한다고 생각이 있다면 그래서 나는 확실하지 않다 자바 EE에서 아주 새로운 해요. Btw, 이름 변경을 고려할 것입니다. 클래스 SendEmail이라고 할 때 send() 메서드를 사용하는 것이 가장 좋은 방법은 아닙니다 (call(), invoke() 등의 이름은 말할 것도 없습니다).

이것은 자바에서이 문제 (The Kingdom of Nouns)에 관한 great article입니다.

어떨까요 : new Email(recipient, body).send()? 당신이 서비스 스타일을 수행하려는 경우

또는, 나는 예를 MailService

+0

+1,하지만 메모, 깨끗한 디자인이 더 많은 수업을 envolves,'이메일'SMTP 또는 IMAP (일부 확장)를 사용하는 방법을 보내겠다고 말할 것이라고 ?? 또 다른 것은 전자 메일 자체를 보낼 수 없으며 대신 프로토콜 클라이언트가 전자 메일을 보낼 수 있습니다. 'MailService'는 전자 메일을 보내거나 읽거나 삭제할 수 있습니다.이 질문은 OOD 기술을 사용하여 OP에서 더 많은 호출이 필요합니다. –

+0

동의합니다. Java Mail API를 어떻게 든 사용해야합니다. 'Postman.send (new Email (recipient, body))'와 같이 저수준의 메카니즘을 내부에 가진'Postman'이라는 클래스를 생성하여 사용할 수 있습니다. 나는 적절한 이름이 매우 중요하다고 생각하지만 때때로 예상되는 행동을 포함하는 방식을 고안하기가 어렵습니다. –