당연히 getter를 무조건 사용하지 않고는 기능을 구현하기 힘들것이다.
출력을 위한 값 등 순수 값 프로퍼티를 가져오기 위해서라면 어느정도 getter는 허용된다.
그러나, Collection 인터페이스를 사용하는 경우 외부에서 getter메서드로 얻은 값을 통해 상태값을 변경할 수 있다.
public List<Car> getCars() {
return cars;
} (x)
public List<Car> getCars() {
return Collections.unmodifiableList(cars);
} (o)
이처럼 Collections.unmodifiableList()
와 같은 Unmodifiable Collecion
을 사용해 외부에서 변경하지 못하도록 하는 게 좋다.