모던 자바 인 액션
Chapter2 동작 파라미터화 코드 전달하기
동작 파라미터화를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응. (동작파라미터화: 어떻게 실행할 것인지 결정하지 않은 코드 블록. 코드 블록은 나중에 프로그램에서 호출.)
2.1 변화하는 요구사항에 대응하기
가정: 농장 재고목록 애플리케이션에 리스트에서 녹색 사과 필터링 기능 추가.
2.1.1 첫 번째 시도: 녹색 사과 필터링
→ 농부가 변심해 빨간 사과를 요구 등 다양한 변화에 대응x. 거의 비슷한 코드가 반복 존재한다면 그 코드를 추상화.
2.1.2 두번째 시도: 색을 파라미터화
→ 색과 무게를 파라미터화 함. 하지만 목록 검색, 각 사과에 필터링 조건을 적용하는 부분의 코드가 중복.
2.1.3 세 번째 시도: 가능한 모든 속성으로 필터링
→ 색과 무게를 filter라는 메서드로 합침. true와 false의 의미 모호. 요구사항에 유연하게 대처x.
2.2 동작 파라미터화
2.2.1 네 번째 시도: 추상적 조건으로 필터링
List<Apple> heavyApples = filterApples(inventory, new AppleHeavyWeightPredicate());
→ 선택 조건을 결정하는 인터페이스 정의. 사과 선택 전략을 캡슐화함. ApplePredicate 객체를 받아 사과 조건을 검사하도록 함.
2.3 복잡한 과정 간소화
2.3.1 다섯번째 시도: 익명 클래스 사용
→ 익명클래스를 이용해 ApplePredicate를 구현. 익명 클래스가 많은 공간 차지.
2.3.2 여섯 번째 시도: 람다 표현식 사용
→ 자바8람다표현식을 이용해 복잡성 해결.
2.3.3 일곱 번째 시도: 리스트 형식으로 추상화
List<Apple> redApples = filer(inventory, (Apple apple) -> RED.equals(apple.getColor()));
→ 유연성과 간결함.
'공부일기 > JAVA' 카테고리의 다른 글
JAVA 공부일기1-14 (0) | 2023.05.31 |
---|---|
JAVA 공부일기2-3 (0) | 2023.05.17 |
JAVA 공부일기2-1 (0) | 2023.05.10 |
JAVA 공부일기1-13 (0) | 2023.05.07 |
JAVA 공부일기1-12 (0) | 2023.04.30 |
댓글