디자인 패턴

SeokHwan An·2022년 8월 8일
0

디자인패턴

목록 보기
1/3

✏️디자인 패턴이란?

선행 개발자들이 프로젝트 개발을 진행하면서 같은 실수를 반복하지 않기 위해 마주쳤던 문제를 바탕으로 특정 상황에서 발생하는 문제 패턴을 발견하고 해결방안으로 정리해 둔 것이 '디자인 패턴'입니다.

'GoF의 디자인패턴'이라는 책에서는 객체지향적 디자인 패턴의 카테고리를 크게 3가지로 분류하는데 각각 "생성 패턴(Creational Pattern)", "구조 패턴(Structural Pattern)", "행동 패턴(Behavioral Pattern)"입니다.

📕생성 패턴

생성패턴은 인스턴스를 만드는 절차를 추상화하는 패턴으로 시스템으로 부터 객체의 생성/합성 방법을 분리해내기 위함입니다. 즉 생성패턴은 시스템이 어떤 구체 클래스를 사용하는지, 인스턴스들이 어떻게 만들어지고 어떻게 합성되는지에 대한 정보를 완전히 가려줍니다.

📚생성 패턴의 종류

  • 싱글턴 패턴(Singleton Pattern)
  • 프로토타입 패턴(Prototype Pattern)
  • 팩토리 메소드 패턴(Factory Method Pattern)
  • 빌더 패턴(Builder Pattern)
  • 추상 팩토리 패턴(Abstract Factory Pattern)

📗구조 패턴

구조 패턴은 작은 클래스들의 상속과 합성을 통해 더 큰 클래스를 생성하는 방법을 제공하는 패턴으로, 동립적으로 개발한 클래스들을 마치 하나인 것처럼 사용할 수 있도록 도와주는 패턴입니다.

📚구조 패턴의 종류

  • 어댑터 패턴(Adapter Pattern)
  • 브릿지 패턴(Bridge Pattern)
  • 합성 패턴(Composite pattern)
  • 데코레이터 패턴(Decorator Pattern)
  • 퍼사드 패턴(Facade Pattern)
  • 플라이웨이트 패턴(Flyweight Pattern)
  • 프록시 패턴(Proxy Pattern)

📘행동 패턴

행위 패턴은 클래스나 객체들이 서로 상호작용하는 방법이나 책임분배 방법을 정의하는 패턴으로 하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 결합도를 최소화 할 수 있도록 도와주는 패턴입니다.

📚행동 패턴의 종류

  • 책임연쇄 패턴(Chain of responsibility)
  • 커맨드 패턴(Command Pattern)
  • 인터프리터 패턴(Interpreter Pattern)
  • 이터레이터 패턴 (Iterator Pattern)
  • 옵저버 패턴(Observer Pattern)
  • 전략 패턴 (Strategy Pattern)
  • 템플릿 메서드 패턴 (Template method pattern)
  • 방문자 패턴 (visitor Pattern)
  • 중재자 패턴 (Mediator Pattern)
  • 상태 패턴 (State Pattern)
  • 기념품 패턴 (Memento Pattern)

🌈디자인 패턴의 장점

1. 개발자간의 원할한 의사소통
개발과정에서 여러 디자인 패턴의 특성을 잘 알고 있다면 반복적으로 나타날 수 있는 문제에 대해서 보다 효율적인 해결책을 내는데 도움이 될 수 있습니다.

2. 소프트웨어 구조 파악 용이
앞서 말한 것과 같이 디자인 패턴은 과거의 개발과정에서 자주 발생한 문제점을 보다 효율적으로 해결하기 위해 나타난 패턴으로 소프트웨어 전체구조를 쉽게 파악하는 것이 가능합니다.

3. 재사용을 통한 개발 시간 단축
기존의 디자인 패턴을 활용하면 보다 문제점을 쉽게 해결가능하며 개발시간을 단축 시킬 수 있습니다.

참고자료

https://tech-people.github.io/2020/01/08/java-design-pattern-creational/ (생성 패턴)
https://velog.io/@ha0kim/Design-Pattern-%EA%B5%AC%EC%A1%B0-%ED%8C%A8%ED%84%B4Structural-Patterns (구조패턴)
https://velog.io/@ha0kim/Design-Pattern-%ED%96%89%EB%8F%99-%ED%8C%A8%ED%84%B4Behavioral-Patterns (행동패턴)

0개의 댓글