닭발개발

[헤드퍼스트 디자인패턴] 6일차. 87-101p 본문

책책책 책을 읽읍시다‼ ver.개발/[ 헤드퍼스트 디자인패턴 ]

[헤드퍼스트 디자인패턴] 6일차. 87-101p

D269 2023. 5. 2. 09:02
728x90

6일차

헤드퍼스트 디자인패턴 [토요일]

87-101pg

요약

CHAPTER 02. 객체들에게 연락돌리기 (feat. 옵저버 패턴)

옵저버 패턴 : 뭔가 중요한 일이 일어났을 때 객체에게 새 소식을 알려 줄 수 있는 패턴!

옵저버 패턴 : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다.

옵저버 패턴의 구조(옵저버 패턴의 클래스 다이어그램)

  • Subject 인터페이스
  • ConcreteSubject(구상 클래스)
  • Observer 인터페이스
  • ConcreteObserver

객체들의 느슨한 결합(Loose Coupling) :

객체들이 상호작용할 수 있지만, 서로를 잘 모르는 관계. → 유연성이 좋아짐.

옵저버 패턴은 느슨한 결합의 대표 예시.

  1. 주제는 옵저버가 특정 인터페이스(observer intrerface)를 구현한다는 사실만 압니다.
  2. 옵저버는 언제든지 새로 추가 가능. : 주제는 observer interface를 구현하는 객체의 목록에만 의존하기 때문에.
  3. 새로운 형식의 옵저버를 추가해도 주제 변경 할 필요 없음.
  4. 주제와 옵저버는 서로 독립적으로 재사용 가능
  5. 주제나 옵저버가 달라져도 서로에게 영향 없음.

디자인 원칙 : 상호작용하는 객체 사이에는 가능하면 느슨한 결합을 사용해야 한다.


라이브러리 속 옵저버 패턴 : 스윙 라이브러리에서의 옵저버 패턴 활용

발췌

💡 상호작용하는 객체 사이에는 가능하면 느슨한 결합을 사용해야 한다.
💡 옵저버 패턴의 구조(옵저버 패턴의 클래스 다이어그램)
Subject 인터페이스 : 주제, 옵저버 등록, 탈퇴 담당ConcreteSubject(구상 클래스) : 주제 역할, subject 인터페이스 구현, 옵저버 등록 및 해지, 상태 바뀔 때 마다 옵저버에게 연락Observer 인터페이스 : 옵저버가 될 가능성이 있는 객체는 꼭 observer 인터페이스를 구현해야 한다.ConcreteObserver : observer 인터페이스만 구현하면 무엇이든 옵저버 클래스가 될 수 있다.

메모

코드를 직접 쳐보니까 옵저버 패턴의 구조가 눈에 들어오는 듯 하다.

 

 

 

728x90
반응형