/////
메소드에서 변하는 것이 있다면, 변하는 것을 캡슐화 해야 한다.
=> 동작 파라미터화
// 자바의 메소드 안에서 변하는 정책을 분리하는 방법
=> 정책을 캡슐화한다.
=> 동작 파라미터화
단점 -> 매번 클래스를 만들어야 한다.
-> 1. 조건이 다른 곳에서 사용될 필요가 없다면, 익명 클래스를 사용하면 됩니다.
익명 클래스 - 동작 파라미터를 편리하게 사용하도록
List<User> result = User.filter(users, new Predicate<User>() {
@Override
public boolean test(User obj) {
return obj.getName().equals(“Tom”);
}
});
// 위의 코드는 불필요한 코드(세레모니 코드)가 반복된다.
=> 2. 익명 클래스는 편리하지만 불필요하게 반복되어 코드의 가독성을 나쁘게 하는 요소다.
=> 람다를 사용하면 위의 ㅗ드를 좀더 간결하게 작성하는 것이 가능하다.
List<User> result = User.filter(users, (User user) -> {
return user.getName().equals(“Tom”);
});
더 간결하게 하려면
List<User> result = User.filter(users, user ->
user.getName().equals(“Tom”)
);
ObjectiveC에서 람다는 함수 포인터를 효과적으로 사용하는 블락포인터를 활용하기 위해 람다가 발전한 것
//람다(C++, C#, Java, ObjC) : 코드 조각을 함수의 인자로 전달하는 기술
// => 익명 클래스를 효과적으로 사용할수 있다.
람다(중요!) 요즘 트렌드라서 중요하다. 동작 파라미터화
1. 해당하는 인터페이스를 구현하는 정책을 만든다.
2. 한번만 사용되는 정책이라면, 익명 클래스로 만들면 된다.
3. 람다를 사용하면 좀더 간결하게 작성 가능하다.
'Software Design Pattern' 카테고리의 다른 글
Item의 상태에 따른 동작을 정의한 인터페이스 (0) | 2017.11.26 |
---|---|
동작 파라미터화2 (0) | 2017.11.25 |
전략패턴의 단점 (0) | 2017.11.24 |
공통성과 가변성의 분리 (0) | 2017.11.23 |
자바8의 인터페이스의 디폴트 메소드 와 관련된 3가지 규칙 (0) | 2017.11.22 |