디자인 패턴
디자인 패턴이란?
디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 해결책이라고 볼 수 있다. 자주 나타나는 문제들을 해결하기 위한 대처법, 안내와 비슷하다
항상 공부할 때 하던대로 단어별로 나누어 이해해보자
Design : 건축·공업 제품·복식(服飾)·상업 미술·산업 미술 등 실용적인 목적을 가진 조형 작품의 설계나 도안. 순화어는 `설계', `도안', `의장'. Pattern : 일정한 형태나 유형, 양식. 순화어는 ‘본새’, ‘틀’, ‘모형’, ‘유형'.
두 개의 단어를 조합해보면 설계의 일정한 형태 정도로 번역할 수 있다.
소프트웨어를 개발할 때에도 비슷한 형태의 문제 또는 고민이 자주 생긴다. 만약 모두가 각자의 방법으로 문제를 해결한다면 복잡하고 외워야할 것들이 많을 것이다. 발전의 속도 또한 느려진다. 이 때 누군가 최적의 방법을 정해두고 많은 사람이 따른다면 다같이 발전할 것이다. 최적의 방법을 두고 개선해 나가고 동일한 방법을 사용하기에 복잡하지않고 이해하기 쉬울 것이다.
디자인 패턴이 정답은 아닐 수 있다. 디자인 패턴을 일반적인 해결책으로 보고 적용할 지는 개발자가 고민해야한다. 이러한 디자인 패턴은 현재도 발견되고 개선되고있다.
필요성
많은 개발자들이 디자인 패턴에 대한 공부 없이 현업에서 뛰고있다. 즉 디자인 패턴을 몰라도 개발은 할 수 있다. 그렇다면 왜 디자인 패턴에 대해 공부해야할까?
- 디자인 패턴은 일반적인 문제에 대해 많은 사람이 고민하고 여러 시도를 통해 검증된 일반적인 해결책이다. 동일한 문제를 겪지않아도 미리 공부를 해두면 많은 종류의 문제를 해결하는 방법을 배울 수 있다.
- “만약 모두가 각자의 방법으로 문제를 해결한다면”에서 알 수 있듯이 디자인 패턴을 적용하면 팀원들과 더 효율적으로 의사소통할 수 있다. 어떤 문제에 대해 어떤 방식으로 해결을 원한다면 명확하게 상대에게 설명해줄 수 있다. 예를 들어 “싱글톤 패턴을 적용하여 해결해주세요.”라고 한다면 싱글톤 패턴에 대한 구조나 이점 등 자세한 설명이 필요없을 것이다.
주의점
디자인 패턴이 만능은 아니다. 반드시 주의해야할 부분이 있다.
- 비효율적인 해결책
- 잘못된 패턴 사용
분류
디자인 패턴은 의도 또는 목적에 따라 분류할 수 있다. 주로 아래와 같이 분류한다.
- 생성 패턴
- 구조 패턴
- 행동 패턴