개요

객체 지향 프로그래밍(OOP)는 상태와 행동을 하나의 객체로 묶어, 복잡한 엔티티와 그 동작을 자연스럽게 모델링한다. 이를 통해 객체의 경계가 명확하고, 해당 객체의 상태와 행동을 안전하게 관리할 수 있다.

반면, 데이터 지향 설계(DOP)는 데이터를 가능한 불변의 형태로 정의하고, 해당 데이터데 대한 로직은 별도의 코드에서 관리한다. 해당 방식은 record, sealed class, pattern matchin과 같은 기능을 활용해 더 간단하고 명확하게 구분현할 수 있다.

쉽게 말해 복잡하고 상태 변화가 많은 경우 OOP가 간단하고 일시적인 데이터 처리에는 DOP가 유리하다.

따라서 상황에 맞게 OOP와 DOP를 혼합해 사용하는 것이 중요하다.


DOP에 사용하는 Java 기능


Record

Java 16에서 처음 등장한 개념으로 다음과 같은 목표를 가진다.


패턴 매칭과 Sealed