getter를 무조건 사용하지 말라는 말은 아니다.

당연히 getter를 무조건 사용하지 않고는 기능을 구현하기 힘들것이다.

출력을 위한 값 등 순수 값 프로퍼티를 가져오기 위해서라면 어느정도 getter는 허용된다.

그러나, Collection 인터페이스를 사용하는 경우 외부에서 getter메서드로 얻은 값을 통해 상태값을 변경할 수 있다.

public List<Car> getCars() {
        return cars;
    } (x)

public List<Car> getCars() {
        return Collections.unmodifiableList(cars);
    } (o)

이처럼 Collections.unmodifiableList() 와 같은 Unmodifiable Collecion 을 사용해 외부에서 변경하지 못하도록 하는 게 좋다.