옵저버 패턴(with. 프록시패턴)

임수정·2023년 5월 18일
0
post-thumbnail

안녕하세요~
오늘은 오랜만에 기본개념을 정리하는 시간으로 돌아왔습니다!
개발자들에게는 개발지식뿐만 아니라 컴퓨터지식도 필요한 부분인데요
혹시라도 제가 정리하는 글에 문제가 있을경우 댓글남겨주시면 수정하겠습니다!

디자인패턴

소프트웨어 개발에서 발생했던 문제를 해결하기 위한 반복적인 해결책들을 모아놓은 템플릿 또는 틀입니다. 디자인 패턴은 소프트웨어 개발에서 생기는 문제들을 해결하고, 유지 보수 가능하고 확장 가능한 소프트웨어를 개발하는 데 도움을 줍니다.

디자인패턴에는 여러종류의 패턴들이 존재합니다.
싱글패턴,팩토리 패턴,이터레이터 패턴,...

저는 그 중에서도 "옵저버 패턴"에 대해서 정리를 해보겠습니다.

옵저버패턴

저는 일단 "옵저버" 라는 단어에 대해 궁금해졌습니다.
사전적 정의로는 "관찰자" 라는 뜻입니다.

옵저버 패턴 : 상태변화가 일어난 주체(subject)를 관찰하고 관심을 가지고 있던 다수의 객체(옵저버)에게 상태변화의 알림을 보내는 디자인 패턴입니다. 주체와 옵저버사이에 일대다(1:M)의 관계가 형성되어있습니다.

주체(subject) : 상태를 가지고 있으며, 상태가 변화하면 등록된 옵저버들에게 자동으로 알림을 보냅니다.

옵저버(observer) : 주체의 알림을 받으면 필요한 작업들을 수행합니다. 일반적으로 인터페이스나 추상클래스로 정의되며 주체에 의해 호출되는 메서드를 구현합니다.

이러한 특징을 가진 옵저버패턴은 주로 상호작용을 해야하는 경우에 유용하게 사용되고 주로 이벤트처리, MVC 패턴, GUI 프로그래밍, 데이터 변경 알림 등 다양한 상황에서 활용될 수 있습니다.

자바스크립트에서는 옵저버패턴을 활용하기 위해서는 "프록시 객체" 를 활용해야 한다는것을 알게되었습니다.

프록시 객체 : 다른 객체의 기본적인 동작의 작업을 대라지의 역할로서 수행하는 객체를 뜻한다.

여기서 프록시 객체는 프록시 패턴이 녹아들어 있는 객체입니다.

프록시 패턴을 활용하여 옵저버 패턴을 구현할 때는 프록시 객체가 옵저버들을 관리하고, 주체와 옵저버 사이의 통신을 중개하는 역할을 수행합니다. 프록시 객체는 주체의 상태 변화를 감지하고, 이를 등록된 옵저버에게 알립니다. 이를 통해 옵저버 패턴의 동작을 확장하고 유연하게 구현할 수 있습니다.

📌 정리

옵저버 패턴에 대해서 알면 알수록 우리도 모르게 실생활에서 많이 쓰이는 디자인 패턴이라는 생각이 들었습니다. 예를들어, 유튜버(구독,알림 서비스), SNS(팔로우 알림) 와 같은 서비스를 매일 혹은 매시간 마다 받고 있다고 생각합니다.

옵저버 패턴을 잘 이해하고 활용한다면 온라인 속 커뮤니케이션 서비스가 증가하는 시대에 맞게 유연한 시스템을 개발하는데 많은 도움이 될 것 같습니다

profile
부족함을 인정하고 채워나가는 개발자! (Node.js 개발자)

0개의 댓글