-
외부에서 변수에 직접 접근하게 되면 정보가 보호되지 못한다.
-
이를 방지하기 위해 변수는 private로 접근 막기
-
공개되는 method를 통한 접근으로 수정 : getter / setter
-
객체의 생성 제어와 Singleton 디자인 패턴
- 객체의 생성을 제한해야 한다면
- 여러 개의 객체가 필요 없는 경우 -> 수정 가능한 멤버 변수가 없고 기능만 있는 경우(stateless한 객체)
- 객체를 계속 생성/삭제 하는데 많은 비용이 들어 재사용이 유리한 경우
-Singleton 디자인 패턴
- 외부에서 생성자에 접근 금지 -> 생성자의 접근 제한자를 private로 설정
- 내부에서는 private에 접근 가능하므로 직접 객체 생성 -> 멤버 변수 이므로 private 설정
- 외부에서 private member에 접근 가능한 getter 생성 -> setter 불필요
- 객체 없이 외부에서 접근할 수 있도록 getter와 변수에 static 추가
- 외부에서는 언제나 getter를 통해서 객체를 참조하므로 하나의 객체 재사용