84
자바에서 코틀린으로
컴포넌트 모델이 확실한 선택이다.
하지만 자바빈즈가 도입될 때 개발자들은
UI
컴포넌트뿐 아니라 대부분 객체가 가변 객체일
거라고 생각했다. 그렇지 않을 이유가 뭐 있겠는가? 객체를 사용하는 목적은 프로퍼티를 캡슐
화하고 프로퍼티 사이의 관계 관리이다. 객체는 경계가 변경될 때 컴포넌트의 너비를 변경하
거나, 상품을 추가할 때 쇼핑 카트의 총액을 변경하는 등의 문제를 해결하도록
설계
됐다. 객체
는 가변 상태를 관리하는 문제에 대한 해결책이었고, 자바는 당시 시점에서 불변성
String
클
래스를 제공할 정도로 급진적인 언어였다 (다만 자바도 당시의 한계를 뛰어넘지는 못해서 가변
Date
를 선택했다 ).
직업인으로서 우리는 당시보다 이 분야를 깊이 이해하게 됐다. 우리는 객체를 사용해 여러 가
지 사물을 표현할 수 있다는 점에 감사한다. 이런 사물에는 값, 엔티티, 서비스, 동작, 트랜잭션
등이 포함된다. 그리고 자바 객체의 디폴트 패턴은 여전히 빈, 즉 게터와 세터를 통해 프로퍼티
를 표현한 가변 객체다.
UI
툴킷의 경우 자바빈즈 방식이 적절하지만 다른 경우에도 잘 들어맞
는 디폴트 패턴이라고 할 수는 없다. 우리가 객체로 표현하고 싶은 대부분 대상에서는 값이 더
나은 패턴이다.
5.2
값
영어에서
값
value
이라는 단어는 여러 가지 뜻이 있는 단어다. 컴퓨팅에서는 변수, 파라미터, 필
드에 값이 있다고 말한다. 여기서 값은 변수 등에 결합된 원시값이나 참조를 뜻한다. 이 책에서
값이라고 말하면 값 의미론을 따르는 구체적인 ...