[Design pattern] 디자인 패턴이란?

2022. 10. 3. 00:58Programming/디자인 패턴

디자인 패턴

 

건축학 or 컴퓨터 과학에서 사용되는 용어, 설계 문제에 대한 해답을 문서화하기 위해 고안된 방식이다.

이 중에서 공부하면서 정리할 부분은 바로 소프트웨어 개발에서 말하는 디자인 패턴을 공부하고 기록할 예정이다

 

https://terms.naver.com/entry.naver?docId=3532958&cid=58528&categoryId=58528 

 

Gof 디자인 패턴

대부분 그렇지만 소프트웨어를 설계할 때도 경험만큼 확실한 것은 없다. 그러나 모든 사람이 숙련된 설계 경험자일 수는 없다. 그렇다면 경험이 적은 사람들이 설계를 잘할 수 있는 방법은 없을

terms.naver.com

 

디자인 패턴

위키 - 소프트웨어 디자인 패턴 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
소프트웨어 디자인 패턴은 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것

각각의 상황에 맞는 디자인 패턴이 존재하며, 이를 상황에 맞게 사용을 해야 한다.


  • 생성
    • 객체를 생성과 변경으로 시스템에 끼치는 영향 최소화 및 코드 유연성 증
      •  factory method
         singleton
         prototype
         builder
         abstraction factory

 

  • 구조
    • 프로그램 내의 자료구조나 인터페이스 구조 등 구조를 설계할 때 사용/활용하는 패턴
    • 클래스의 구성을 통해 더 큰 객체를 표현할 수 있게 된다
      •  adapter
         composite
         bridge
         decorator
         facade
         flyweight
         proxy

 

  • 행동
    • 반복적으로 사용되는 객체들의 상호작용을 패턴화
    • 각 객체의 상호작용과 역할을 분산시킨다
      •  template method
         interpreter
         iterator
         observer
         strategy
         visitor
         chain of responsibility
         command
         mediator
         state
         memento

 

  • 동시 실행

 

디자인 패턴은 분류되어 그룹화되어서 정리가 되어있다. 이 중 구조 패턴을 시작을 하면서 추후에 다른 그룹화된 패턴에도 접근을 하는 식으로 공부를 진행할 예정이다.

 

# 디자인 패턴의 경우 명확하게 정답이 있는 것이 아닌 본인이 진행하고자 하는 프로젝트의 상황에 맞춰 적용하면 된다.

 

장점

  • 개발자 간의 정해진 유형의 코드로 인한 원활한 소통
  • 소프트웨어 구조 설계 및 파악 용이
  • 재사용을 통해 반복되는 부분 제거 및 시간 단축

단점

  • 객체지향 설계 및 구현

 

 

안티 패턴

디자인 패턴처럼 많이 사용되는 패턴이지만 그 사용에 있어서 비효율적이거나 혹은 비생산적인 패턴을 의미한다.

여기서 말하는 비생산성이란 성능, 가독성, 유지보수 등 코드의 유지보수 및 성능 향상 등, 코드의 발전에 마이너스적인 요소를 뜻한다. 이와 같은 안티 패턴도 이번 디자인 패턴을 공부하면서 같이 추가적으로 공부하고 기록할 예정이다.