디자인 패턴(Design pattern)?

juunini·2021년 2월 11일
0

개념정리

목록 보기
7/7
post-thumbnail

주의

이 글은 어떤 디자인 패턴이 있는지 다루는 글이 아니라
'디자인 패턴이란 무엇이고, 왜 써야하는가?'를 쉽게 알아보는데에 초점을 맞춘 글입니다.

구글 검색에 꺼무위키가 떴다?

나무위키 디자인 패턴 링크

들어가보면 글 시작부터 아래 문구가 보인다.
"객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴."

네...?
객체 지향 으로 한정짓는걸까요?
역시 꺼무위키...

위키백과에서 말하는 디자인 패턴

위키백과 디자인 패턴 링크

건축가 크리스토퍼 알렉산더가 언급된다.
'GoF의 디자인 패턴' 에서도 언급이 되는데, 아래 인용문이 첨부되어 있다.

각 디자인 패턴은 기존 환경 내에서 반복적으로 일어나는 문제들을 설명한 후, 그 문제들에 대한 해법의 핵심을 설명해줍니다.
똑같은 방법으로 두 번 하지 않고 이 해법을 100만 번 이상 재사용할 수 있도록 말이죠.

디자인 패턴 학회(PLoP)?

위키백과를 찾아본 덕분에 알았는데 학회도 있다고 한다.
관심이 있다면 https://www.hillside.net/ 여기에서 확인해볼 수 있다.

GoF의 디자인 패턴

이 글을 쓰기 위해 'GoF의 디자인 패턴'을 읽고있다.
꺼무위키를 깐 이유가 책 머리말 시작문구에 있는데

이 책은 객체지향적 기술이나 설계를 소개하는 책이 아닙니다.

라는 문구가 있기 때문이다.

객체지향 설계에서 만나는 문제가 아니라,
소프트웨어 설계에서 만나는 문제의 해결을 도와주는게 디자인 패턴이다.

그렇지만, 이 책의 부제가 '재사용성을 지닌 객체지향 소프트웨어의 핵심 요소' 이기 때문에 객체지향 위주의 설명이 들어가는건 어쩔 수 없다.

디자인 패턴을 사용해야 하는 이유

  • 전문가들은 초보자들처럼 모든 문제를 처음 기초 단계에서부터 해결하려고 하지 않습니다. 대신 전에 사용했던 해결책을 다시 사용해 봅니다.
  • 디자인 패턴을 이용하면 좋은 설계나 아키텍처를 재사용하기 쉬워집니다.
  • 디자인 패턴은 설계자들이 "올바른" 설계를 빨리 만들 수 있도록 도와줍니다.

특정한 전후 관계에서 일반적 설계 문제를 해결하기 위해 상호교류하는 수정 가능한 객체와 클래스들에 대한 설명

그리고, 위의 크리스토퍼 알렉산더의 인용문에서도 나와있듯이 반복적으로 일어나는 문제들의 해법이기 때문에 같은 실패를 하지 않게 된다.

결론

사실 지금의 나는 이것이 쉽고 간단한 개념이 아니기에 짧게 설명하긴 힘들다고 생각하고 있다.
그래서 여기까지만 하려고 한다.

여기까지만 정리해도 충분히 '디자인 패턴이 뭐고 왜 써야돼?' 라는 질문에는 대답이 가능하다고 생각하고 있다.
(그렇다고 디자인 패턴이란 개념에 대해 완벽하게 설명하고 있는건 아니다.)

정리

  • 디자인 패턴이란 이 전에 반복적으로 생겼던 문제들의 해결책이다.
  • 디자인 패턴을 이용하면 좋은 설계나 아키텍처를 재사용하기 쉬워지고 올바른 설계를 빨리 만들 수 있도록 도와준다.
profile
Full StackOverFlow

0개의 댓글