디자인패턴이란
디자인..? 패턴..?
간단히 정리하자면, 해결책인데..!
이 글을 읽고 있는 당신은 소프트웨어 개발을 하면서 한번쯤 문제에 직면한 적이 있다.
똑같은 클래스 객체를 무진장 많이 생성해야 했다거나.. 문제 해결을 위해 똑같은 코드를 무진장 많이 복사했다거나..
나는 문제를 왜 이렇게 일으키는 것일까 고민했겠지만 사실 대다수의 개발자들이 위와 같은 문제에 직면했었고
대부분의 문제에 대한 해결책들이 이미 정리되어 있다.
디자인 패턴은 라이브러리와 같이 코드 조각을 재사용하는 것은 아니지만, 패턴의 세부 개념들을 공부해서 프로젝트 코드에 적용할 수 있다.
알고리즘 vs 디자인 패턴
어떤 목표를 달성하기 위해 따라야할 일련의 절차를 제시하는 알고리즘, 레시피에 비유
목표와 세부 기능에 대해서는 제시하지만 구체적인 구현 절차에 대해서는 이야기하지 않는 디자인 패턴, 청사진에 비유
같은 코드에 동일한 디자인 패턴을 제시해도 전혀 다른 코드가 나온다.
왜냐하면 구현 순서는 오로지 개발자가 결정하기 때문이다.
디자인 패턴은 객체 지향 설계의 일반적인 문제들에 대한 해결책을 의미하며,
같은 해결책을 여러 프로젝트에서 반복적으로 적용해서 사용하다면 누군가가 이름을 붙여서 개념을 설명하게 된다고 합니다.
사실 디자인 패턴을 알지 못해도 개발자로 일하는데 큰 문제는 없다고 합니다.
다만, 디자인 패턴은 이미 수많은 개발자들이 시도하고 검증한 해결방법이기 때문에 문제에 직면했을 경우 사용하면 더없이 좋을 것이며,
팀원들간의 의사소통 언어가 될 수 있습니다.
참고 사이트에서는 '해당 문제에 대해서는 싱글턴을 쓰세요'라고 했는데, 싱글턴이라는 단어만을 사용해서 해결방법을 알려준 것이다.
패턴에 대한 비판도 일부 있는데,
디자인 패턴이 생긴 이유는 프로그래밍 언어가 지원하지 않는 부분을 채우기 위해 생겼다고 보면 된다.
글을 참고하면 람다 함수를 이용하게 되면 Strategy(전략) 패턴을 대신할 수 있다고 합니다.
또한, 간단한 코드로만으로 해결할 수 있는 이슈조차도 디자인 패턴을 사용하고자 해서 더욱 복잡해지는 일이 있다고 합니다.
생성 패턴은 기존 객체를 재활용하고 유연성을 증가시키는 객체 생성 방법을 제공한다.
구조 패턴은 구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법을 제공한다.
행동 패턴은 객체 간의 효율적인 의사소통과 책임 할당을 처리한다.
참고. https://refactoring.guru/ko/design-patterns/catalog
'좋은 코드' 카테고리의 다른 글
MySQL 곱씹기 (0) | 2022.10.31 |
---|---|
String과 char (0) | 2022.10.14 |