[Java] Java8 설계의 밑바탕 - 동작 파라미터화
🙆♂️ import 🙇♂️
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를 전달하는 사상에 기초하기 때문이다.
댓글남기기