안녕하세요. 도미닉입니다.
오늘은 디자인 패턴에 대해서 알아보겠습니다.
디자인 패턴이란?
“바퀴를 다시 발명하지 마라(Don’t reinvent the wheel)” 이라는 한 문장으로 표현할 수 있습니다.
여러분이 개발하고 고민하는 문제들은 이미 누군가가 경험했을 문제라는 겁니다.
선배 개발자들은 특정 맥락에서 자주 발생하는 문제들의 해결책을 정리해놓고 패턴으로 정의해놨습니다.
디자인 원칙
애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다.
구현이 아닌 인터페이스에 맞춰서 프로그래밍한다.
상속보다는 구성을 활용한다.
디자인 패턴을 알고 있으면 좋은 점은?
만약 여러분이 팀 내에서 아래와 같은 대화를 하게 되면 어떨까요?
후배 개발자 : 이 broadcast 클래스를 만들어 봤습니다. 이 클래스는 자신에게 귀를 기울이고 있는 모든 다른 객체를 추적할 수 있고, 새로운 데이터가 들어올 때마다 각각의 리스너에게 메시지를 보내줍니다. 게다가 리스너는 언제든지 broadcast 에 참가하거나 탈퇴할 수 있습니다. 괜찮지 않나요? 동적이면서도 결합도는 낮습니다.
후배 개발자는 장황하게 설명하였지만 위에 설명한 내용은 옵저버 패턴이라고 하면 한 단어로 정리할 수 있습니다.
이런 예를 보면 알 수 있듯이 디자인 패턴을 알고 있으면 의사소통이 수월하고 정확해집니다.
문제를 겪고 있을 때 해당 상황에 맞는 패턴을 알고 있다면 문제 해결도 빨리 할 수 있겠죠
디자인 패턴의 단점은?
이러한 패턴은 많이 알고 있으면 도움이 되지만 너무 몰입하면 문제가 발생할 수 있습니다.
간단한 프로그램이나 전혀 상관없는 상황에서 “이럴 때는 내가 알고 있는 패턴을 사용해야해” 라며 생뚱 맞은 패턴으로 문제를 해결하고자 한다면 시간도 오래 걸리고 다른 사람은 오히려 알아보기 힘들 수 있습니다.
이러한 것을 패턴 열병이라고 하는데 뭐든지 적당한 것이 좋은 것 같습니다.
정리
이번에 옵저버 패턴에 대해서 발표할 기회가 있어서 옵저버 패턴과 디자인 패턴에 대해서 공부를 하였습니다.
처음에는 디자인 패턴에 대해서 어렵게 생각했습니다.
조금 더 공부하다보니 생각보다 간단하고 이미 사용하고 있는 패턴도 있었습니다.
디자인 패턴들을 알고 있다면 비슷한 문제가 발생했을 때 선배 개발자들이 정리해 놓은 깔끔한 방법으로 해결할 수 있을 것입니다.
글 읽어주셔서 감사합니다.