포트 폴리오를 적으면서 많은 공부를 하게 됐는데, 그 중 하나다. 매번 ~~ 패턴을 적용해서 ~~을 구현(개발) 했습니다. 라고 얼렁뚱땅 넘어갔는데, 이번 기회에 공부하고 기록하고자 한다.
디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문데를 해결하는 전형적인 해결책이다.코드에 반복되는 디자인 문제들을 해결하기 위해 맞춤화 할수 있는 미리 만들어진 청사진과 비슷하다.
표준화된 라이브러리나, 함수를 코드에 복사해서 사용하는 것처럼 패턴을 사용할수는 없다. 왜냐면 패턴은 재사용 할 수 있는 코드의 조각이 아니라 문제를 해결하는 방식을 알려주는 일반적인 개념이기 때문이다.
자주 패턴과 알고리즘을 헷갈려하는데, 두개 모두 해결책을 설명하기 때문이다. 간단히 말하면 패턴이 더 상위 수준의 설명이다.
나는 패턴에 대해서 아무런 지식 없이 개발을 했다. 나도 모르는 사이에 디자인 패턴을 구현 하고 있을지도 모른다. 그런데도 디자인 패턴에 대해서 왜 배워야하는지 이유에 대해서 알아보자.
객체 간 상호작용 방식을 개선해 더 나은 소프트웨어 구조를 만들도록 도와준다. 패턴을 적용하면 구조가 더 모듈화 되어 유지보수 및 확장이 쉬워진다.
모듈화 : 큰 시스템을 작은 단위로 분해하여 개발하는 것으로, 유지보수 및 확장성을 높이기 위한 방법이다. 각 모듈은 자체적으로 동작 가능하며, 다른 모듈과의 의존성을 최소화하여 유연하게 조합이 가능.
이미 검증된 솔루션으로 문제를 해결하는 데 소요되는 시간을 줄여준다.
코드의 가독성을 높여주는 역할을 한다. 패턴을 사용하면 코드를 더 쉽게 읽을 수 있으며, 더욱 명확하게 이해할 수 있다.
패턴을 사용하면 코드를 더 쉽게 읽을 수 있으며, 더욱 명확하게 이해할 수 있다.
예를 들어
디자인 패턴 모르는 개발자
"나는 1, 2, 3, 4 실행 순서 중 3번만 a, b, c 상태 별로 다르기 때문에 1, 2, (3), 4 순서는 부모 메소드에 냅두고 3번만 상속이나 구현으로 풀었으면 좋겠어요." (나 : ? 왜 저렇게 어렵게 말하지?)
디자인 패턴 아는 개발자
"이 부분 템플릿 메소드 패턴으로 하는 게 어떨까요?"
별 거 아닌 거 같아도 커뮤니케이션이 짧아지고 명확해지니 아주 좋은 소통을 할 수 있다.
생성 디자인 패턴은 기존 코드의 유연성과 재사용을 증가시키는 객체를 생성하는 다양한 방법을 제공한다.
구조 패턴은 구조를 유연하게 하고 효율적으로 유지하면서 객체들과 클래스들을 더 큰 구조로 조립하는 방법을 설명한다.
행동 디자인 패턴들은 알고리즘들과 객체 간의 책임 할당과 관련이있다.
디자인 패턴은 종 23가지가 있다. 바로 뛰어들어 배우는데 망설임이 생기게된다. 하루에 하나씩 익히도록 노력해보겠다.