[Java] 동작 파라미터화

나는양위에자는양·2024년 10월 13일

JAVA

목록 보기
2/3
post-thumbnail

동작 파라미터화(Behavior parameterization)

  • 어떻게 실행할 것인지 결정하지 않은 코드 블록
  • 변화하는 요구사항에 유연하게 대응할 수 있음

예시)

다음과 같이, Book 클래스가 존재한다.
페이지 수가 200 이하인 책을 필터링 할 수도 있고,
가격이 15000원 이하인 책을 필터링 할 수도 있고, 등등.. 다양한 요구사항이 올 수 있다.
동작 파라미터화를 이용한다면, 이처럼 변화하는 요구사항에 유연한 대응이 가능하다.

public class Book {
    private String title;
    private String author;
    private String genre;
    private int pages;
    private int price;
public interface BookPredicate {
    boolean test(Book book);
}
// 조건에 맞는 책을 필터링
public static List<Book> filterBooks(List<Book> books, BookPredicate predicate) {
    List<Book> result = new ArrayList<>();
    for(Book book : books) {
        if(predicate.test(book))
            result.add(book);
    }
    return result;
}
List<Book> shortBooks = filterBooks(bookList, (Book book) -> book.getPages() < 200);
List<Book> expensiveBooks = filterBooks(bookList, (Book book) -> book.getPrice() > 15000);

BookPredicate의 test() 함수만 구현하면 요구사항에 맞춰 유연한 필터링을 할 수 있다.

참고자료

추가 공부1
추가 공부2
모던 자바 인 액션

profile
잠을 잘 자자

0개의 댓글