선행 개발자들이 프로젝트 개발을 진행하면서 같은 실수를 반복하지 않기 위해 마주쳤던 문제를 바탕으로 특정 상황에서 발생하는 문제 패턴을 발견하고 해결방안으로 정리해 둔 것이 '디자인 패턴'입니다.
'GoF의 디자인패턴'이라는 책에서는 객체지향적 디자인 패턴의 카테고리를 크게 3가지로 분류하는데 각각 "생성 패턴(Creational Pattern)", "구조 패턴(Structural Pattern)", "행동 패턴(Behavioral Pattern)"입니다.
생성패턴은 인스턴스를 만드는 절차를 추상화하는 패턴으로 시스템으로 부터 객체의 생성/합성 방법을 분리해내기 위함입니다. 즉 생성패턴은 시스템이 어떤 구체 클래스를 사용하는지, 인스턴스들이 어떻게 만들어지고 어떻게 합성되는지에 대한 정보를 완전히 가려줍니다.
구조 패턴은 작은 클래스들의 상속과 합성을 통해 더 큰 클래스를 생성하는 방법을 제공하는 패턴으로, 동립적으로 개발한 클래스들을 마치 하나인 것처럼 사용할 수 있도록 도와주는 패턴입니다.
행위 패턴은 클래스나 객체들이 서로 상호작용하는 방법이나 책임분배 방법을 정의하는 패턴으로 하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 결합도를 최소화 할 수 있도록 도와주는 패턴입니다.
1. 개발자간의 원할한 의사소통
개발과정에서 여러 디자인 패턴의 특성을 잘 알고 있다면 반복적으로 나타날 수 있는 문제에 대해서 보다 효율적인 해결책을 내는데 도움이 될 수 있습니다.
2. 소프트웨어 구조 파악 용이
앞서 말한 것과 같이 디자인 패턴은 과거의 개발과정에서 자주 발생한 문제점을 보다 효율적으로 해결하기 위해 나타난 패턴으로 소프트웨어 전체구조를 쉽게 파악하는 것이 가능합니다.
3. 재사용을 통한 개발 시간 단축
기존의 디자인 패턴을 활용하면 보다 문제점을 쉽게 해결가능하며 개발시간을 단축 시킬 수 있습니다.
https://tech-people.github.io/2020/01/08/java-design-pattern-creational/ (생성 패턴)
https://velog.io/@ha0kim/Design-Pattern-%EA%B5%AC%EC%A1%B0-%ED%8C%A8%ED%84%B4Structural-Patterns (구조패턴)
https://velog.io/@ha0kim/Design-Pattern-%ED%96%89%EB%8F%99-%ED%8C%A8%ED%84%B4Behavioral-Patterns (행동패턴)