- 최봉진님 정리내용
장점
- validation 을 할 수 있다.
- get, set 하는 값을 변형해서 set 하거나 return 할 수 있다.
- 안의 구조를 숨길 수 있다. ( encapsulation )
- 안의 변수명을 숨길 수 있다.
- 상속할 때 override 할 수 있다.
- getter 와 setter 에 다른 access level 을 적용할 수 있다.
- lazy loading 이 가능하다.
- 몇몇 library, platform, framework 에서 이를 요구하기도 한다. ( reflection 등 이용 )
단점
- 단순한 get, set의 경우에는 mobile 환경에서 performance 이슈가 생길 수 있다.
- 동작 없이 데이터만 있는 클래스는 쓸데 없는 코드만 늘어난다. 예: 웹 프로그래밍에서 많이 볼 수 있는 DTO(data transfer object) 그래서 이런 경우에는 그냥 public 데이터를 쓰기도 한다.
- getter, setter는 자신의 상태정보를 외부에 노출하고 이것은 외부의 영향으로 상태정보가 변할 수 있는 가능성을 열어두게된다. 한 객체의 변화가 여러 객체에게 영향을 주는 이러한 코드가 많아질수록 훗날 유지보수가 어려워질 것이다.
- getter메소드만으로 외부에서 객체의 상태를 변경하지는 못하지만 그 결과값이 객체의 상태를 변경시키는데에 사용될 수 있다.
- 변경되지 않는 인스턴스에 대해서도 setter로 접근이 가능해져 객체의 일관성, 안정성이 보장받기 힘들다. (setter가 가능하다는 것은 불변하지 않다는 것이다)
'공부 > 자료조사' 카테고리의 다른 글
DAO과 DTO그리고 Entity (0) | 2022.04.03 |
---|---|
MySQL 과 H2 (0) | 2022.04.01 |
Maven vs Gradle (0) | 2022.03.29 |
Spring vs Spring Boot (0) | 2022.03.28 |
DNS의 원리 (0) | 2022.03.27 |