<시나리오>
단순히 데이터를 모아주는 것.
순수하게 데이터만 담는다.(나중에 필요할때 메소드를 추가)
데이터가 흩어지는 것을 방지하고 처리한다.
package message;
public class MessageDTO { //데이터클래스
//누구에게, 제목, 내용
private String to;
private String title;
private String content;
public MessageDTO(String to, String title, String content) { //DTO를 꼭 사용해야하기때문
super();
this.to = to;
this.title = title;
this.content = content;
}
@Override
public String toString() {
return "MessageDTO [to=" + to + ", title=" + title + ", content=" + content + "]";
}
}
package message;
public class MessageService { //메서드-파라미터-인스턴트변수-생성자
public boolean messageSender(MessageDTO dto) { //return값은 전송성공or실패--> boolean
boolean result = false;
return result;
}
}
messageSender의 파라미터는 데이터클래스에서 선언한 MessageDTO
return값은 메일전송의 성공 / 실패 이므로 true/false boolean타입으로 설정
*serviece 클래스에서는 입/출력 금지!
package message;
import java.util.Scanner;
public class MessageUI { //사용자와 접촉하는것만
Scanner scanner;
MessageService service;
MessageDTO dto;
public MessageUI(Scanner scanner, MessageService service) {
super();
this.scanner = scanner;
this.service = service;
}
public void work() {
System.out.println("누구에게?");
String to = scanner.nextLine();
System.out.println("제목은?");
String title = scanner.nextLine();
System.out.println("내용은?");
String content = scanner.nextLine();
System.out.println("전송을 취소하려면 n을 눌러주세요");
String input = scanner.nextLine();
if(input.equals("n")) {
work(); //재귀: work메서드에서 work메서드호출
}
MessageDTO dto = new MessageDTO(to, title, content);
boolean result = service.messageSender(dto);
System.out.println("전송내용: "+ dto);
}
}
MessageUI는 MessageService가 꼭 필요한 존재 : 의존적인 관계
의존객체 또는 의존데이터는 직접 생성하지 않는다 : 의존성주입
UI는 user와 접촉하는 클래스로 보이는것만을 만든다.
package message;
import java.util.Scanner;
public class Main {
public static void main(String[] args) { //전체를 총괄, 객체를 만들고 실행하는것.
Scanner scanner = new Scanner(System.in);
MessageService service = new MessageService();
MessageUI ui = new MessageUI(scanner, service);
ui.work();
}
}
main메소드는 객체지향과 관련이 없는 메소드로서
전체를 총괄하고 객체를 실행하는 메소드이다.