본문 바로가기
Software Engineering/Design Pattern

그냥... 디자인 패턴이란 무엇일까?

by BenKangKang 2020. 10. 14.

이 글을 쓰는 이유는 디자인 패턴 왜 사용하는지 궁금한 사람이 있을 것 같아서 간단히 정의해보기 위함이다.

 

프로그래밍을 하다 보면 디자인 패턴이란 말을 많이 듣게 되는데,  싱글턴, 스트래티지, 팩토리 패턴이 여기에 속한다.

TL;DR

패턴이란 무언가가 반복되어서 하나의 방식 된 것이며, 프로그래밍에서 패턴이란 문제 해결에 가장 효과적이라고 알려진 방법들이 자리를 잡아서 널리 쓰이게 된 것들을 의미한다.

디자인 패턴은 프로그램 개발 과정에서 빈번하게 발생하는 디자인상의 문제를 정리해서, 상황에 따라 간편하게 적용해서 쓸 수 있는 패턴 형태로 만든 것을 의미한다.

우리가 일상적으로 접하는 문제는 이미 다른 이들이 여러 시행착오를 겪어 그 해결책이 존재할 가능성이 높은데, 이런 지혜와 교훈을 잘 활용해야 한다. 잘 활용한다면 적지 않은 시간과 노력, 시행착오를 줄일 수 있기 때문이다.

 

Pattern?

우선 패턴의 정의를 명확하게 확립하고 넘어가자.

 

패턴은 프랑스어 낱말 patron에서 온 것으로, 되풀이되는 사건이나 물체의 형태를 가리킨다.

물체들의 집합 요소로 부르기도 한다. 이러한 요소들은 예측 가능한 방식으로 되풀이된다. 쪽매맞춤이라는 가장 기본적인 패턴은 반복과 주기성에 기반을 둔다

 

위는 패턴에 대한 사전적 정의인데,  "무언가가 반복되어서 하나의 방식 된 것"이라고 정의 할 수 있을 것 같다.

 

가령 본인이 아침에 일어나서 1시간 구보하는 습관이 있으면 패턴이라고 볼 수 있는 것이다.

 

나는 매주(?) 일요일, 지난 한주에 대한 회고, 앞으로 한 주에 대한 계획을 세우는 시간을 갖는다. 이 역시 패턴이다.

 

Design Pattern?

패턴의 정의로 디자인 패턴을 유추해본다면 "시스템을 설계할 때, 어떤 이유에선가 반복적으로 사용되는 방법"  정도로 정의할 수 있다.

 

우리가 시스템을 디자인 하다 보면 여러 가지 문제점에 부딪히게 된다.

 

중요한 건 대부분의 문제는 많은 사람들이 공통으로 부딪혔던 문제들일 테고, 여기에 대한 여러 해결 방안들이 있을 것이다. 이 중 효율과 안정이 인정되어 자리를 잡고 널리 쓰이게 된 해결 방법들이 존재하는데 이것들이 바로 디자인 패턴이다.

 

정리하자면 디자인 패턴은 프로그램 개발 과정에서 빈번하게 발생하는 디자인상의 문제에 대한 해결 방안들을 정리해서, 상황에 따라 간편하게 적용해서 쓸 수 있도록 패턴 형태로 만들어 놓은 것을 의미한다.

 

 

 

주의할 것은 모든 도구는 용도에 알맞게, 적절한 곳에 사용되어야 한다는 것이다. 만병통치약이 아니다. 항상 Anti-Pattern 인지 아닌지 확인하면서 사용해야 한다.

 

안티 패턴이란 습관적으로 많이 사용하는 패턴이지만 성능, 디버깅, 유지보수, 가독성 측면에서 부정적인 영향을 줄 수 있어 지양하는 패턴이다. 이 문서는 실수하기 쉬운 안티 패턴을 사례별로 설명하고 개선 방법을 가이드한다. (토스트UIui.toast.com/fe-guide/ko_ANTI-PATTERN)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글