개발을 하면서 더 좋은 코드를 위한 고민을 하다보면, 아니면 개발을 시작한지 얼마 되지 않았더라도 언젠가 한번쯤은 듣게 되는 단어가 있죠.
싱글톤(Singleton), MVC, MVVM, 디자인 패턴과 같은 단어 말이에요..!! 이 글에서는 이 단어들과 관련된 디자인 패턴이 무엇인가에 대해 살펴보도록 하겠습니다!
소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다.
출처: 위키 백과
디자인 패턴은 개발에서 발견된 설계의 노하우들이 모여(경험의 산물) 일반적인 해결책입니다. 구체적인 구현이라기 보다는 코드를 작성하기 위한 시작점이라고 할 수 있죠.
"흠...그냥 내가 원하는 대로 돌아가기만 하면 되지, 그런 패턴 같은 게 왜 필요해?"
라고 생각하시는 분도 있을 거에요.
디자인 패턴을 사용하면 어떠한 이점이 있을까요?
이외에도 GoF(Gang of Four)라 불리는 사람들이 23가지의 디자인 패턴을 정리하고 위와 같은 3가지로 분류했습니다.
Creational Pattern | Structural Pattern | Behavioral Pattern |
---|---|---|
Abstract factory | Adapter | Chain of responsibility(책임 연쇄) |
Builder | Bridge | Command |
Factory Method | Composite | Interpreter |
Prototype | Decorator | Iterator |
Singleton | Facade(퍼사드) | Mediator |
Flyweight | Memento | |
Proxy | Observer | |
State | ||
Strategy | ||
Template method | ||
Visitor |
패턴에만 집중하다보면 간단한 코드로 해결되는 상황에서도 패턴을 적용하려고 한다거나, 패턴의 남용으로 인한 프로젝트의 복잡도를 높이는 일이 일어날 수도 있습니다.
또한, 디자인 패턴은 아이디어 일 뿐이지 실질적으로 구현된 것은 아니므로 디자인 패턴을 아는 것이 무조건 좋은 코드로 이어지진 않습니다.
따라서 디자인 패턴을 무작정 도입하기 보다는 프로젝트에서 우리가 해결하고자 하는 문제가 무엇인지 명확하게 하는 것이 더 중요하다고 생각됩니다.
그러고 난 뒤에 디자인 패턴을 이용하면 위에 말한 장점을 더 잘 이용할 수 있겠죠!
이번 글에서는 디자인 패턴이란 무엇인지에 대해 살펴보았는데요, 궁금한 점이나 보충하고 싶은 의견이 있다면 댓글로 남겨주세요!
읽어주셔서 감사합니다 :)