본문 바로가기

CS/Computer Science

01/09 디자인 패턴이란?

디자인 패턴

디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책입니다.이는 코드에서 반복되는 디자인 문제들을 해결하기 위해 맞춤화할 수 있는 미리 만들어진 청사진과 비슷합니다.

표준화된 라이브러리 들이나 함수들을 코드에 복사해 사용하는 것처럼 패턴들을 붙여넣기 식으로 사용할 수 없습니다. 패턴은 재사용할 수 있는 코드 조각이 아니라 특정 문제를 해결하는 방식을 알려주는 일반적인 개념입니다. 당신은 패턴의 세부 개념들을 적용하여 당신의 프로그램에 맞는 해결팩을 구현할 수 있습니다.

패턴은 알고리즘과 자주 혼동됩니다. 왜냐하면 두 개념 모두 알려진 문제에 대한 일반적인 해결책을 설명하기 때문입니다. 알고리즘은 어떤 목표를 달성하기 위해 따라야 할 명확한 일련의 절차를 정의하지만, 패턴은 해결책에 대한 더 상위 수준의 설명입니다. 예를 들어 같은 패턴을 두 개의 다른 프로그램에 적용하면 두 프로그램의 코드는 다를 것입니다.

알고리즘은 요리법에 비유할 수 있지만 패턴은 요리법이 아닌 청사진에 더 가깝습니다. 알고리즘과 요리법 둘 다 목표를 달성하기 위한 명확한 단계들이 제시되어 있습니다. 반면에 청사진은 결과와 기능들은 제시하나 구현 단계 및 순서는 사용자가 결정합니다.

 

패턴의 구성 요소

 

많은 상황에서 독자들이 패턴을 재현할 수 있도록 대부분의 패턴을 매우 형식적으로 설명했습니다. 패턴 설명에 일반적으로 표시되는 섹션들은 다음과 같습니다.

  • 패턴의 의도 섹션에서는 문제와 해결책을 간략하게 설명했습니다.
  • 동기 섹션에서는 문제와 패턴이 가능하게 하는 해결책을 추가 설명했습니다.
  • 클래스의 구조 섹션에서는 패턴의 각 부분과 이러한 부분들이 어떻게 연관되어 있는지를 보여 주었습니다.
  • 코드 예시 섹션에서는 여러 인기 있는 프로그래밍 언어들로 된 코드 예시를 제공하여 독자들이 패턴 뒤의 아이디어를 이해하기 쉽도록 했습니다.

일부 패턴 섹션에서는 패턴의 적용, 구현 단계 및 다른 패턴과의 관계와 같은 유용한 세부 정보들도 설명했습니다.

 

디자인 패턴의 장점과 단점

 

**장점**

  • 개발자 간의 원할한 의사소통
  • 소프트웨어 구조 파악 용이
  • 재사용을 통한 개발 시간 단축
  • 설계 변경 요청에 대한 유연한 대처
  • 야근없이, 빠른 퇴근 가능
  • 불필요한 리소스 낭비 방지

**단점**

  • 객체지향 설계 / 구현 위주로 사용된다
  • 초기 투자 비용 부담

'CS > Computer Science' 카테고리의 다른 글

01/12 트랜잭션의 ACID 성질  (0) 2023.01.12
01/10 SOLID  (0) 2023.01.11
01/06 컴파일러  (0) 2023.01.06
01/05 GPU  (0) 2023.01.05
01/04 CPU  (0) 2023.01.04