개인적 감상평


과정에서 강조하는 소트웍스 앤솔러지 객체지향 생활체조원칙이라는게 있다.

여기의 규칙중 일급 컬렉션을 사용하라는 말이 있는데, 이 내용이 이번 장과 비슷한 내용을 말한다.

둘 다 결국 원시값 & 외부 코드를 포장(boxing)하여 사용하라는 것인데, 어째서 포장을 해야하고 힘들게 포장을하면 뭐가 좋은지에 대해 말한다.

그리고 이 장에서는 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 살펴본다.

1. 외부 코드 사용하기

이런 양방향의 긴장으로 인해 시스템 경계에서 문제가 생길 수 있습니다.

Map

외부라이브러리 중 컬렉션이 있고 이중 자주쓰이는 것 중 java.util.Map이 있다.

이 맵에서 제공하는 api만해도 clear, containsKey, entrySet, equals, .isEmpty, keySet, notify, notifyAll, put, putAll, remove, size, toString, values, wait 등 엄청 다양하고 많은 함수를 제공한다.

근데 만일 이 Map에 내가 필요한 객체들을 담아서 쓴다고 할 경우 이 값의 불변성이 보장될까?

private final Map<String, Car> cars = new HashMap<>();
cars.put("firstCar", new Car());