바른 책임 연쇄 패턴 예

왜 굳이 Logger 클래스에 next 멤버 변수를 사용했을까?
LogManager 클래스를 사용하면 더 직관적인 구현이 가능함

LogManager 클래스로 관리하면 다형적으로 메서드 호출 가능한데?

가지고 있는 모든 Logger 개체에서 다형적으로 message() 메서드 호출

이제 Logger 클래스에서 next 멤버 변수 사라짐
- 이전 노트에서 본 것처럼 여전히
Logger개체가 스스로 어떤 로그 레벨에 출력하는지 책임은 그대로 짐

Logger 클래스를 상속받는 자식 클래스들은 변한게 없음

LogManager 개체 생성
addHandler()메서드로 등록message()메서드 호출
이전 노트에서 본 next 멤버 변수 설정하는 것보다 훨씬 간단함
- 책임 연쇄 패턴과 로거 참고

위키의 예가 잘못됨

next 멤버 변수는 “책임”을 위해 필요함

기회는 받지만
- 이전 강의(책임 연쇄 패턴과 로거)에서 본 첫번째 예에서는
next로 다음 개체에서 호출 기회를 무조건 줌 - 위에서 본 두번째 예에서는
for문으로this.loggers순회해서 무조건 기회를 줌
책임이란?
- 한 개체가 처리하면 책임을 지고, 그 뒤의 개체들은 메시지 처리할 기회를 받지 못함!!
- 책임에 대한 처리를 위해서는
next멤버 변수를 사용할 수 밖에 없음- 이전 강의(책임 연쇄 패턴과 로거)에서 본 첫번째 예

조건문으로 첫번째 예의 message() 메서드를 수정하면 됨
- 책임을 지도록
- 내가 책임지면 끝
- 내 뒤는 로그 출력할 필요 없어!

alt는 선택지를 의미함