본문 바로가기

IT성장일기

[스터디/디자인패턴]2주차 옵저버 패턴

이번주도 퇴근후 카페에서 만나 스터디를 진행했다.
1주차 전략패턴 복습을 안해가서 걱정했는데 스터디 초반이라서 어찌저찌 넘어갈수있었다.

우리가 정한 교재는 헤드퍼스트 디자인패턴!
딱딱하지 않고 이해하기 쉽게 설명되어있어서  스터디 첫교재로 잘 고른것같다.
문제는 쉽게 설명되어있는거치고 한문장 한문장 곱씹게 된다는거? 기초적인 이론을 다 잊고있었던터라 단어의 의미부터 파악하기가 너무 어려웠다. 4학년때 알았더라면 좋았을것 같은 책ㅠㅠ 업무할때 상속이니 캡슐화니 이런걸 말하면서 쓰는게 아니다보니  다시 기초적인 단어들부터 뜻을 찾아보게 되었다.

어디가서 모른다고하기 창피해서 말 못했는데 다행히 다른분께서 내 수준에 맞춰서 의미를 다 정리해주셨다ㅋㅋㅋ 감사감사🙏
첫 스터디에 집고가면 다음장에서도 다다음장에서도 이해하기가 훨씬 수월해진다.

[1장 복습]
전략패턴: 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸수있게 함.

정의는 굉장히 간단한데 이걸 적용하는 과정을 쭉 읽어보니 내가 제대로 개발하고있었던건지 되돌아보게됐다. 책에서는 몇장 안되는 과정이었지만 설계할때 이걸 굳이 캡슐화해놓는게 효율적일지 그냥 단순 구현으로 하는게 효율적일지 고민하게 되는 순간이 항상 있었던것 같다. 일단 구현해두고 여러곳에서 쓰게될 상황이 오면 생각하기로하며 넘어갔던 순간들도 분명 있었던것같다. 그때마다 설계했을때부터 고려됐다면 좋았을텐데 하는 생각을 했었는데ㅠ 전략패턴을 제대로 적용할수있다면 그런 순간들을 줄일수있지않았을까

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

옵저버패턴은 전략패턴보다 뭔가 더 어려운 느낌이 들었다. Subject와 Observer로 역할을 나누고 연락을 주는 객체가 Subject, 연락을 받는 객체가 Observer라고 정의했다. 뭔가 생소한 느낌이었는데 버튼에 리스너로 구현하는 방식이 옵저버패턴이라는 말을 들으니 신기했다. 그런데 또 생각해보면 버튼이 눌리면(객체의 상태가 바뀌면) 리스너가 수행되고(다른객체에게 연락이 가고) 이벤트가 발생한다(내용이 갱신된다)는 흐름이 딱 옵저버패턴이었다.

디자인패턴 스터디를 하고있기는 한데 그래서 디자인패턴 뭐써봤어요 라는 질문을 들으면 어떤 얘기를 해야할지 고민되는건 안비밀🤫