바른 책임 연쇄 패턴 예

왜 굳이 Logger 클래스에 next 멤버 변수를 사용했을까?

LogManager 클래스를 사용하면 더 직관적인 구현이 가능함

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

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

이제 Logger 클래스에서 next 멤버 변수 사라짐

  • 이전 노트에서 본 것처럼 여전히 Logger 개체가 스스로 어떤 로그 레벨에 출력하는지 책임은 그대로 짐

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

LogManager 개체 생성

  • addHandler() 메서드로 등록
  • message() 메서드 호출

이전 노트에서 본 next 멤버 변수 설정하는 것보다 훨씬 간단함

위키의 예가 잘못됨

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

기회는 받지만

책임이란?

  • 한 개체가 처리하면 책임을 지고, 그 뒤의 개체들은 메시지 처리할 기회를 받지 못함!!
  • 책임에 대한 처리를 위해서는 next 멤버 변수를 사용할 수 밖에 없음

조건문으로 첫번째 예의 message() 메서드를 수정하면 됨

  • 책임을 지도록
  • 내가 책임지면 끝
  • 내 뒤는 로그 출력할 필요 없어!

alt는 선택지를 의미함

0건의 항목