Null Object Pattern
Null Object Pattern
Null Object Pattern
- 함수에서 null을 리턴하는 경우,
함수를 호출한 쪽
에서 null을 처리해야 함 - null이 퍼져서 연쇄적으로 오류 발생 가능
- 함수 내부에서 null을 반환해야 하는 경우 null을 의미하는 object를 반환해서 문제 해결 가능
- 함수를 호출한 쪽에서 신경쓸 필요가 없음
- null check에 대한
책임
을 한 곳으로 모을 수 있음
- 코드 예시, findById를 호출한 쪽에서는 null 여부를 상관쓰지 않아도 된다
- static한 emptyUser라는 null object를 반환하기 때문
class User {
private int id;
User(int id) {
this.id = id;
}
public static User emptyUser = new User(0);
// ...
}
class Users {
List<User> users;
public find(int id) {
Optional<User> user = users.stream()
.filter(u -> u.getId() == id)
.findOne();
if (user.isPresent()) {
return user.get();
}
return User.emptyUser;
}
}