개발 알다가도 모르겠네요

Observer Pattern 을 알아보자 본문

디자인패턴

Observer Pattern 을 알아보자

이재빵 2021. 12. 13. 19:44
728x90

변화를 식별 -> 클래스를 캡슐화 -> 추상 or 인터페이스로 아우를 수 있는 개념.

 

데이터의 변경이 발생하였을 때 상대 클래스 및 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 쓰입니다.

데이터가 변경시 통지되는 클래스에 의존하면 안되며, 새로운 통보대상이 추가돼도 데이터 관리클래스는 수정되면 안됩니다.

 

옵서버 패턴은 통보 대상 객체의 관리를 Subject 클래스와 Observer 인터페이스로 일반화합니다.

그러면 데이터 변경을 통보하는 클래스(ConcreteSubject)통보 대상 클래스/객체ConcreteObserver)에 대한 의존성을 제거할 수 있습니다. 

결과적으로 통보 대상 클래스나 대상 객체의 변경에도 ConcreteSubject 클래스를 수정 없이 그대로 사용할 수 있도록 합니다.

 

 

 

Example - 성적 출력 프로그램

 

-ScoreRecord 클래스: 점수를 저장/관리하는 클래스

-DataSheetView 클래스: 점수를 목록형태로 출력하는 클래스

 

 

  • 성적을 다른 방식으로 출력하고 싶다면? 성적을 목록으로 출력하지 않고 최소/최대값만을 출력하려면?
  • 성적이 입력되면 최대 3개 목록, 5개 목록으로 출력, 동시에 최소/최대값만을 출력하려면?
  • 성적의 출력 대상이 변경되는 것을 지원한다면 어떤 변경 작업을?

 

해결책