Computer Science./Design Patterns.

[Design Patterns.] 디자인 패턴이란?

Chuuu_DevCamp:) 2023. 9. 21. 20:00
반응형

디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 solution이다. 이는 재사용할 수 있는 코드 조각같은 것들이 아니고, 특정 문제를 해결하는 방식을 알려주는 일반적인 개념이다.
패턴은 알고리즘과 혼동되곤 하는데, 둘 다 어떤 문제를 해결하기 위해 따라야 할 일련의 절차를 정의하지만, 패턴은 알고리즘보다 더 상위 수준의 설명을 의미한다. 즉, 알고리즘을 요리에 대한 레시피에 비유한다면, 패턴은 다이닝 코스 구성으로 비유할 수 있다. 
 
디자인 패턴은 Creational Pattern(생성 패턴), Structural Pattern(구조 패턴), Behavioral Pattern(행동 패턴) 3가지로 구분 되며 종류는 다음과 같다.

Creational PatternStructural PatternBehavioral Pattern
SingletonAdaptorCommand
Abstract FactoryCompositeInterpreter
Factory MethodDecoratorIterator
BuilderFacadeMediator
PrototypeFlyweightMemento
 ProxyObserver
  State
  Strategy
  Template Method

디자인 패턴을 배워야 하는 이유

사실 패턴에 대해 알지 못해도 개발자로 일 할 수 있고, 이미 그런 사람들이 있을 수 있다. 혹은 자신도 모르게 일부 패턴을 구현했을 수도 있다. 그러나, 왜 패턴을 학습해야 하는지 다음과 같이 정리했다.

  • 디자인 패턴은 SW 디자인의 일반적인 문제들에 대해 검증된 해결책들을 모은 것이며, 이러한 패턴들을 배우게 되면 객체지향 디자인의 원칙들을 사용해서 많은 종류의 문제들을 해결하는 방법을 배울 수 있다.
  • 팀원과의 효율적인 의사소통에 사용할 수 있는 공통 언어를 정의한다.
    예를 들어 팀이 디자인 패턴을 이해하고 있다면, 업무중 "그 문제는 싱글턴을 사용하세요"라고 한다면 모두가 그 말을 이해하고 더이상 설명할 필요가 없을 것이다.

주의 사항

  • 프로젝트의 맥락에 따라 적용하지 않고 "문자 그대로" 구현하는 지양해야 할것이다.
  • 부당한 사용
    "망치만 있으면 모든 것이 못처럼 보인다"라는 말이 있다.
    패턴을 갓 배운 후, 더 간단하게 문제가 해결 되는 상황임에도 불구하고 모든 곳에 패턴을 적용하려고 하는 것을 지양해야 할것이다.

※ 참고: https://refactoring.guru/ko/design-patterns

디자인 패턴들

refactoring.guru