
298
자바에서 코틀린으로
Route
를 사용하면
1980
년대 프로그래밍 스타일로 다시 돌아가야 한다.
예제
15.3
[
encapsulated
-
collections
.
0
:
src
/
main
/
java
/
travelator
/
UI
.
java
]
public void render(Route route) {
for (int i = 0; i < route.size(); i++) {
var journey = route.get(i);
render(journey);
}
}
컬렉션을 캡슐화하면, 캡슐화한 클래스 안에 컬렉션에 존재하는 연산을 정의해야만 해당 연산
을 컬렉션의 내용에 적용할 수 있다. 새로운 방법으로 캡슐화한 컬렉션 데이터를 처리하고 싶
다면, 저항이 가장 적은 경로는 캡슐화한 클래스 안에 메서드를 추가하면 된다. 이 클래스에 더
많은 메서드를 추가하면 할수록 클래스가 애플리케이션의 다른 부분과 결합된 정도도
커진다
.
UI
기능을 새로 추가했는데 데이터 접근 계층을 재컴파일해야만 한다는 사실을 발견했을 때쯤
에 이 문제를 깨닫게 된다.
15.1
도메인 컬렉션 합성하기
컬렉션을 캡슐화하지 않으면, 가령 다른 클래스 경계 안쪽에 도메인 모델의 데이터 구조를 감
추는 대신에 도메인 모델이 적절한 데이터 구조가
되도록
한다면, 도메인 데이터에 사용할 수
있는 연산의 종류가