변화하는 요구사항에 대응하기 위해
모던 자바 인 액션에서 이야기하는 이번 챕터의 동적 파라미터가 필요한 이유입니다.
- 소비자의 요구는 항상 바뀐다.
- 새로 추가한 기능은 쉽게 구현할 수 있고, 장기적인 관점에서 유지보수가 쉬워야 한다.
동작 파라미터화
동적 파라미터화를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있습니다.
- 동적 파라미터화는 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미합니다. (lazy 방식)
- 메서드의 인수로 코드 블록을 전달할 수 있습니다.
전략패턴을 통해 동작 파라미터화를 잘 활용할 수 있습니다.
전략패턴 : 전력을 캡슐화하는 알고리즘 그룹을 정의하고 런타임에 알고리즘을 선택하는 방법
Predicate : 참 또는 거짓을 반환하는 함수
즉, 전략을
1. 메서드에서 인터페이스로 받고
2. 인터페이스의 구현체를 메서드의 파라미터로 보내는 것이 포인트입니다!
동작 파리미터화의 간단한 사용
동작 파라미터화를 사용할 때 인터페이스를 만들고, 구현체를 인스턴스화하는 것은
상당히 번거로운 작업이고, 재사용하지 않고 한 번만 사용한다면 코드를 읽는 사람이 불편하다는 단점이 있습니다.
자바는 클래스의 선언과 인스턴스화를 동시에 수행할 수 있도록 익명 클래스를 제공합니다.
익명 클래스
이름이 없는 클래스로 선언과 인스턴스화를 동시에 할 수 있습니다.
즉, 즉석에서 필요한 구현을 만들어서 사용할 수 있습니다.
final List<Apple> result1 = filterApples(inventory, new ApplePredicate() {
@Override
public boolean test(final Apple apple) {
return Color.RED.equals(apple.getColor());
}
});
하지만 익명클래스 역시 코드가 길어집니다.
자바는 람다를 제공하여 이 문제를 개선하였습니다.
람다 표현식
람다 표현식을 이용하면 위의 익명클래스를 아래와 같이 간단하게 재구현할 수 있습니다.
final List<Apple> lambdaResult =
filterApples(inventory, (Apple apple) -> Color.RED.equals(apple.getColor()));
마치며
동작 파라미터를 통해 메서드 내부적으로 다양한 동작을수행할 수 있도록 코드를 메서드 인수로 전달하는 방법을 알아보았습니다.
동작 파라미터를 사용하면 변화하는 요구사항에 유연하게 대응할 수 있습니다.
또한, 복잡한 동작 파라미터를 익명클래스 → 람다로 전환하여 코드를 읽기 쉽게 하는 방법을 알아보았습니다.
이번 챕터를 읽으면서 느낀 점은 같은 코드라도 유지보수하기 편하고 가독성이 높은 코드를 작성하기 위해
많은 고민을 하고 코드를 작성해야겠다는 생각이 들었습니다!
다음에는 람다 표현식에 대해 자세히 알아보겠습니다!
'Books > Modern Java In Action' 카테고리의 다른 글
[모던 자바 인 액션] Chapter5. 함수형 데이터 처리 (0) | 2023.07.31 |
---|---|
[모던 자바 인 액션] Chapter4. 스트림 vs 컬렉션 (0) | 2023.07.26 |
[모던 자바 인 액션] Chapter4. 스트림 소개 (0) | 2023.07.26 |
[모던 자바 인 액션] Chapter3. 람다 표현식 (0) | 2023.07.25 |
[모던 자바 인 액션] Chapter1. (0) | 2023.07.21 |