[Java] Java8 설계의 밑바탕 - 동작 파라미터화

GilLog·2021년 6월 10일
0

ModernJavaInAction

목록 보기
5/7

🙆‍♂️ import 🙇‍♂️

Modern Java in Action


Java 8에 추가세 가지 프로그래밍 개념 중 두 번째Code 일부를 API로 전달하는 기능이다.

이전 Unix 명령어 예제에서 sort명령어에 파라미터를 제공해서 역순으로 정렬 등의 다양한 정렬을 수행할 수 있지만,

근본적으로 sort 명령어로 수행할 수 있는 동작은 미리 지정되어있다.

동작 파라미터화(Behavior Parameterization)

Java에서 예를 들면, 210609Gil0001, 210610Log0002와 같은 게시글 ID가 있다고 가정하자.

첫 6자리 숫자는 작성 일자를,
가운데 문자열은 게시글 카테고리를,
마지막 4자리는 게시글 작성 순서를 의미한다고 가정한다.

게시글 ID를 작성 일자, 카테고리, 작성 순서로 정렬한다고 하면,
sort 행위를 하는 명령어가 각각의 타입에 맞게 정렬을 수행하도록 sort에 추가적으로 동작 Code를 작성해야 한다.

작성일자를 비교하는 compareUsingWriteTime(),
카테고리를 비교하는 compareUsingCategory(),
작성순서를 비교하는 compareUsingWriteOrder()

라는 method를 sort에 제공해야 한다고 하자.

하지만 Java 8 이전의 Java에서는 method를 다른 method로 전달할 수 있는 방법이 없었다.
Comparator 객체를 생성해 sort에 넘겨주는 방법기존 동작을 단순하게 재활용 한다는 측면과 부합하지 않고 복잡하여 예외

Java8에서는 method(작성 Code)를 다른 method의 인수로 넘겨주는 기능을 제공한다.

이러한 기능을 동작 파라미터화(Behavior Parameterization) 라고 이론적으로 지칭한다.

이러한 동작 파라미터화가 중요한 이유compareUsingWriteTime(), compareUsingCategory(), compareUsingWriteOrder()를 이용sort 동작을 parameter화 했던 것 처럼,

Stream API는 연산의 동작을 Parameter화 할 수 있는 Code를 전달하는 사상에 기초하기 때문이다.

profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글