옵저버 패턴은 객체의 상태가 바뀌면 객체를 구독하고 있는 다른 객체들한테 연락이 자동으로 갱신되는
패턴을 말한다.
일대 다 객체 의존 관계를 구성하는 패턴이다.
옵저버 패턴은 결합도를 낮추는게 중요하다.
결합도를 낮춰서
- 옵저버를 언제든지 추가 할 수 있게 만들고
- 새로운 옵저버를 추가할때도 주제(subject)를 변경 할 필요가 없고
- 주제와 옵저버가 서로 독립적으로 재사용될 수 있다.
코드로 살펴보자
옵저버 패턴이 없이 구독을 하면
알람을 보내는 시스템이 있다고 해보자
단순하게 구독을 하면 이메일과 sms 를 보내는 시스템이 있다고 치자.
만약에 여기에 추가로 카카오톡 을 보낸다고 한다면?
생성자가 바뀌게 되고 sendNotification 메소드도 변경이 발생한다.
벌써부터 OCP 법칙에 위반이 된다.
옵저버 패턴을 적용해보자
Subject 를 만들어서 옵저버들을 한번에 관리 할 수 있게 만들고
옵저버들을 리스트로 보관할 수 있게 구현을 해둔다.
옵저버 인터페이스를 만들고
각 옵저버들을 만들어서
실행을 시켜보면 정상적으로 구독한 옵저버들의 메소드가 호출이 된다.
옵저버 패턴을 사용하면 추가로 구독할 객체가 생기더라도
기존 코드를 다시 작성할 필요가 없어져서 OCP 를 위배하지 않는다.
'Java > 디자인패턴' 카테고리의 다른 글
디자인 패턴 - 데코레이터 패턴 (0) | 2021.03.16 |
---|---|
디자인 패턴 - 팩토리 패턴 (0) | 2021.03.15 |
디자인 패턴 - Strategy 패턴 (0) | 2021.03.15 |