Design Pattern

2019-06-28
Design Pattern

안녕하세요. 도미닉입니다.

오늘은 디자인 패턴에 대해서 알아보겠습니다.

디자인 패턴이란?

“바퀴를 다시 발명하지 마라(Don’t reinvent the wheel)” 이라는 한 문장으로 표현할 수 있습니다.

여러분이 개발하고 고민하는 문제들은 이미 누군가가 경험했을 문제라는 겁니다.

선배 개발자들은 특정 맥락에서 자주 발생하는 문제들의 해결책을 정리해놓고 패턴으로 정의해놨습니다.

디자인 원칙

  • 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다.

  • 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다.

  • 상속보다는 구성을 활용한다.

디자인 패턴을 알고 있으면 좋은 점은?

만약 여러분이 팀 내에서 아래와 같은 대화를 하게 되면 어떨까요?

후배 개발자 : 이 broadcast 클래스를 만들어 봤습니다. 이 클래스는 자신에게 귀를 기울이고 있는 모든 다른 객체를 추적할 수 있고, 새로운 데이터가 들어올 때마다 각각의 리스너에게 메시지를 보내줍니다. 게다가 리스너는 언제든지 broadcast 에 참가하거나 탈퇴할 수 있습니다. 괜찮지 않나요? 동적이면서도 결합도는 낮습니다.

후배 개발자는 장황하게 설명하였지만 위에 설명한 내용은 옵저버 패턴이라고 하면 한 단어로 정리할 수 있습니다.

이런 예를 보면 알 수 있듯이 디자인 패턴을 알고 있으면 의사소통이 수월하고 정확해집니다.

문제를 겪고 있을 때 해당 상황에 맞는 패턴을 알고 있다면 문제 해결도 빨리 할 수 있겠죠

디자인 패턴의 단점은?

이러한 패턴은 많이 알고 있으면 도움이 되지만 너무 몰입하면 문제가 발생할 수 있습니다.

간단한 프로그램이나 전혀 상관없는 상황에서 “이럴 때는 내가 알고 있는 패턴을 사용해야해” 라며 생뚱 맞은 패턴으로 문제를 해결하고자 한다면 시간도 오래 걸리고 다른 사람은 오히려 알아보기 힘들 수 있습니다.

이러한 것을 패턴 열병이라고 하는데 뭐든지 적당한 것이 좋은 것 같습니다.

정리

이번에 옵저버 패턴에 대해서 발표할 기회가 있어서 옵저버 패턴과 디자인 패턴에 대해서 공부를 하였습니다.

처음에는 디자인 패턴에 대해서 어렵게 생각했습니다.

조금 더 공부하다보니 생각보다 간단하고 이미 사용하고 있는 패턴도 있었습니다.

디자인 패턴들을 알고 있다면 비슷한 문제가 발생했을 때 선배 개발자들이 정리해 놓은 깔끔한 방법으로 해결할 수 있을 것입니다.

글 읽어주셔서 감사합니다.