📒 [실전! 스프링 부트와 JPA 활용 - 김영한] 학습 후 정리자료입니다.
Setter
가 사용된 시점에서 Setter
가 사용된 의도 즉, 새로운 객체를 생성한 후 멤버 변수를 초기화(생성)하기 위한 것인지, 기존의 객체의 멤버변수의 값을 갱신(업데이트)하는 것인지, 아니면 다른 의도가 있었는지를 파악하기 어렵다.public
인 Setter
가 존재한다면 특정 메서드가 아닌 모든영역에서 접근이 가능하기 때문에 객체의 일관성을 유지하기 어렵다.Setter
없이 객체 이외의 영역에서 객체를 생성할 수 있다.class Member {
String name;
int age;
public static Member createMember(String name, int age){
Member meber = new Member();
member.name = name;
member.age = age;
return member;
}
}
Member member = Member.createMember("memberA", 26); // Setter 없이 생성자를 통해 객체 생성
Setter
없이 객체 이외의 영역에서 객체의 멤버변수 값을 갱신할 수 있다.Setter
와 크게 다르지 않지만 메서드의 이름을 통해 어떤 상황이 발생했는지 유추할 수 있고, 변경되지 않아야 할 다른 멤버 변수의 값이 변경되는 것을 방지할 수 있다.class Member {
String name;
int age;
public static Member createMember(String name, int age){
Member meber = new Member();
member.name = name;
member.age = age;
return member;
}
public void changeName(String name){
this.name = name;
}
}
Member member = Member.createMember("memberA", 26); // 객체 생성
member.changeName("memberB"); // 객체의 멤버변수(name) 값 갱신