Skip to Content
Java에 대한 기능적 접근 방식
book

Java에 대한 기능적 접근 방식

by Ben Weidig
May 2025
Beginner to intermediate
414 pages
5h 58m
Korean
O'Reilly Media, Inc.
Book available
Content preview from Java에 대한 기능적 접근 방식

4장. 불변성

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

데이터 구조(데이터 값을 저장하고 구성하는 전용 구조)를 다루는 것은 거의 모든 프로그램의 핵심 작업입니다. OOP에서 이는 일반적으로 객체로 캡슐화된 가변적인 프로그램 상태를 다루는 것을 의미합니다. 그러나 함수형 접근 방식에서는 불변성이 데이터를 다루는 데 선호되는 방식이며 많은 개념의 전제 조건입니다.

Haskell과 같은 함수형 프로그래밍 언어나 Scala와 같은 다중 패러다임이지만 기능적 성향이 강한 언어에서는 불변성이 일반적인 기능으로 취급됩니다. 이러한 언어에서 불변성은 설계에 대한 사후 고려 사항이 아니라 필수이며 종종 엄격하게 적용됩니다. 이 책에서 소개하는 다른 대부분의 원칙과 마찬가지로 불변성은 함수형 프로그래밍에만 국한되지 않으며 선택한 패러다임에 관계없이 많은 이점을 제공합니다.

이 장에서는 JDK에서 이미 사용 가능한 불변 유형에 대해 알아보고, JDK에서 제공하는 도구 또는 타사 라이브러리를 사용하여 부작용을 피하기 위해 데이터 구조를 불변으로 만드는 방법을 알아봅니다.

참고

이 장에서 사용되는 '데이터 구조'라는 용어는 컬렉션이나 사용자 정의 유형과 같이 데이터를 저장하고 구성하는 모든 구조를 나타냅니다.

OOP의 변경 가능성 및 데이터 구조

객체 지향 지향 언어인 일반적인 Java 코드는 객체의 상태를 변경 가능한 형태로 캡슐화합니다. 객체의 상태는 일반적으로 "설정자" 메서드를 사용하여 변경할 수 있습니다. 이 접근 방식은 프로그램 상태를 임시적으로 만들므로 기존 데이터 구조가 변경되면 현재 상태가 제자리에서 업데이트되고 이를 참조하는 다른 사람에게도 영향을 미치며 이전 상태는 손실됩니다.

2장에서 설명한 대로 OOP Java 코드에서 가변 상태를 처리하는 데 사용되는 가장 일반적인 형태인 JavaBeans와 일반 Java 객체(POJO)를 살펴보겠습니다. 이 두 데이터 구조와 서로 다른 속성에 대해 많은 혼란이 존재합니다. 어떤 의미에서는 둘 다 모든 관련 상태를 캡슐화하여 구성 요소 간에 재사용성을 만들어야 하는 일반적인 Java 객체입니다. 설계 철학과 규칙은 다르지만 비슷한 목표를 가지고 있습니다.

POJO는 설계와 관련하여 어떠한 제한도 없습니다. 비즈니스 로직 상태를 "단지" 캡슐화해야 하며, 심지어 변경 불가능하도록 설계할 수도 있습니다. 어떻게 구현하는지는 여러분의 환경에 가장 적합한 것이 무엇인지에 달려 있습니다. 일반적으로 변경 가능한 상태를 가진 객체 지향 컨텍스트에서 필드를 보다 유연하게 사용할 수 있도록 "getter" 및 "setter"를 제공합니다.

반면에 JavaBeans는 더 쉽게 인스펙션하고 재사용할 수 있는 특별한 종류의 POJO로, 특정 규칙을 따라야 합니다. 이러한 규칙이 필요한 이유는 JavaBeans가 처음에 IDE의 UI 위젯처럼 구성 요소 간에 공유 가능한 표준화된 기계 판독 가능한 상태로 설계되었기 때문입니다. ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

자바로 배우는 핵심 자료구조와 알고리즘: 기술 면접에 필요한 실용주의 자료구조와 알고리즘

자바로 배우는 핵심 자료구조와 알고리즘: 기술 면접에 필요한 실용주의 자료구조와 알고리즘

유동환, 앨런 B. 다우니
Java의 반응형 시스템

Java의 반응형 시스템

Clement Escoffier, Ken Finnigan

Publisher Resources

ISBN: 9798341654457Supplemental Content