: 동작 파라미터화 패턴은 동작을 캡슐화한 다음, 메서드로 전달하여 메서드의 동작을 파라미터화한다.
: 자바 API의 많은 메서드를 다양한 동작으로 파라미터화할 수 있다. 또한 이들 메서드를 익명 클래스와 자주 사용하기도 한다.
1. Comparator로 정렬하기
: 자바 8의 List에는 sort 메서드가 포함되어 있다. 다음과 같은 인터페이스를 갖는 java.util.Comparator 객체를 이용해서 sort의 동작을 파라미터화할 수 있다.
public interface Comparator<T> {
int compare(T o1, T o2);
}
Java
복사
: Comparator를 구현하는 클래스들을 통해 sort 메서드의 동작을 손쉽게 제어할 수 있다. 다음과 같이 익명 클래스를 이용해, 무게가 가벼운 순서로 정렬할 수 있다.
inventory.sort(new Comparator<Apple>() {
public int comapre(Apple a1, Apple a2) {
return a1.getWeight().compareTo(a2.getWeight());
}
}
Java
복사
: 아니면 람다를 사용해서 할 수도 있다.
inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()));
Java
복사