[9] 디자인패턴: 옵저버 패턴 (Observer)
·
Java/Design Pattern
1. 들어가며: "강한 결합"에서 "이벤트"로 기존의 전통적인 방식에서는 하나의 비즈니스 로직이 성공하면 그에 따른 부가 작업을 직접 호출했다. 예를 들어 '회원 가입'이 완료되면, 회원 서비스가 직접 EmailService.send()와 SmsService.send()를 호출하는 식이다.1.1. 문제 상황: 연쇄적인 수정의 늪 이러한 구조는 회원 서비스가 이메일과 SMS 서비스의 존재를 너무 자세히 알고 있어야 한다는 강한 결합(Strong Coupling) 문제를 야기한다. 만약 나중에 "가입 축하 포인트 지급" 기능이 추가된다면 회원 서비스의 코드를 또 수정해야 한다. 비즈니스가 복잡해질수록 회원 서비스는 감당할 수 없을 정도로 거대해지며, 하나를 고치면 열 군데가 고장 나는 위험한 상태가 되는 것..