“시시각각 변하는 사용자의 요구 사항”
- Day 1) 녹색 사과를 찾고 싶다.
- Day 2) 150그램 이상인 사과를 찾고 싶다.
- Day 3) 녹색이면서 150그램 이상인 사과를 찾고 싶다.
→ 이렇게 자주 변하는 요구 사항에 적절히 대응하려면?
- 엔지니어링적 비용의 최소화
- 새로 추가한 기능을 비교적 쉽게 구현
- 유지 보수 용이
“동작 파라미터화 : Behavior Parameterization”
- 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록
- 해당 코드 블록의 실행은 나중으로 미뤄짐
- 자주 변하는 사용자의 요구 사항에 효과적으로 대응할 수 있다.
- [예시]
- 리스트의 모든 요소에 대해 **‘어떤 동작’**을 수행할 수 있음.
- 리스트 관련 작업을 끝낸 다음에 **‘어떤 다른 동작’**을 수행할 수 있음.
- 에러가 발생하면 **‘정해진 어떤 다른 동작’**을 수행할 수 있음.
#2.1. 변화하는 요구사항에 대응하기
#2.1.1. 첫 번째 시도 : 녹색 사과 필터링
enum Color {
RED, GREEN
}
public static List<Apple> filterGreenApples(List<Apple> inventory) {
List<Apple> result = new ArrayList<>();
for (Apple apple : inventory) {
if (GREEN.equals(apple.getColor)) {
result.add(apple);
}
}
return result;
}