-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[feat] World 이벤트 관리에 Observer 패턴 적용 #13
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Observer 패턴과 테스트 적용해주신 내용 잘 확인했습니다!
한 가지 궁금한 점이 있어서 코멘트 남겨봅니다 ㅎㅎ
Observer 패턴에서 Subject 는 자신의 변경사항을 Observer 들에게 알리는 주체로 알고 있는데요, (이슈에 첨부에주신 그림에서의 Publisher 역할) GameEvent 인터페이스의 역할이 Subject 가 아닌 단순 데이터 객체가 아닌지에 대한 생각이 듭니다! 오히려 won(), lost() 등의 상태 변화 메서드가 호출될 때 fireEvent를 호출하는 LevelWinListenerAdapter 와 WorldStatsListenerAdapter 가 Subject에 더 가까운 느낌이랄까요..? 혹시 GameEvent를 Subject로 설정하신 이유가 있으실까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
기존 LevelWinListener 인터페이스와 새로 만든 GameEventManager 클래스를 연결하기 위해 Adapter 패턴을 활용하셨군요! 👍
typeListeners.remove(listener); | ||
} | ||
|
||
public void fireEvent(GameEvent event) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분이 옵저버 패턴에서 옵저버들을 업데이트 하는 부분이군요! 옵저버들의 세부 구현체가 아닌 인터페이스를 참조해서 잘 구현된 것 같습니다.
Subject 정하는게 사실 엄밀히 따지자니 이래저래 애매한 부분이 있어서, 고민하다가 데이터클래스 자체를 지정하게 되었습니다. |
4560a95
to
3a7e139
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Subject 정하는게 사실 엄밀히 따지자니 이래저래 애매한 부분이 있어서, 고민하다가 데이터클래스 자체를 지정하게 되었습니다.
각 Adapter에 두자니 결국 그 둘도 데이터클래스를 기반으로 구성되는 것이라, 최상위 역할인 데이터클래스 하나를 Subject로 지정하는 편이 낫겠다고 생각했습니다.
역시 용민님도 이부분에 대해 고민을 하셨군요..! 말씀하신대로 각 Adapter에 두자니 애매한 부분이 있고 해서 최상위 역할인 데이터 클래스를 Subject로 정하신 부분에 대해 동의합니다.
고생하셨습니다!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코드 모두 확인했습니다!
이전까지의 PR은 수정을 통한 패턴 적용이 메인이었는데, 리소스가 높은 옵저버 패턴을 적용하신다고 정말 고생하셨습니다:)
#️⃣ 연관 이슈
📝 작업 내용
참고 이미지 및 자료
💬 리뷰 요구사항