티스토리 뷰

728x90

디자인 패턴은 반복적으로 발생하는 문제들을 해결하기 위한 일반적인 해법으로, 소프트웨어 설계 시 재사용 가능한 형태로 구성됩니다. 디자인 패턴은 크게 생성(Creational), 구조(Structural), 행동(Behavioral) 패턴의 세 가지 주요 카테고리로 분류됩니다. 각 카테고리에는 여러 패턴이 포함되며, 이들은 소프트웨어 설계에서 특정 상황에 맞는 최적의 방법을 제공합니다.

1. 생성 패턴 (Creational Patterns)

생성 패턴은 객체 생성에 관련된 패턴으로, 객체의 생성 과정을 더 유연하게 만들어줍니다.

  • Singleton (싱글톤): 클래스의 인스턴스가 하나만 생성되고, 전역적으로 접근 가능하도록 하는 패턴입니다.
  • Factory Method (팩토리 메소드): 객체 생성을 서브클래스에 위임하여 객체 생성을 캡슐화하는 패턴입니다.
  • Abstract Factory (추상 팩토리): 관련된 객체의 가족을 생성하기 위한 인터페이스를 제공하며, 구체적인 클래스는 서브클래스에서 정의됩니다.
  • Builder (빌더): 복잡한 객체의 생성 과정과 표현 방법을 분리하여, 동일한 생성 과정에서 다른 표현 결과를 만들 수 있게 합니다.
  • Prototype (프로토타입): 생성할 객체의 타입이 새로운 인스턴스를 만드는 데 사용되는 원형이며, 이를 복사하여 새로운 객체를 생성합니다.
  •  

2. 구조 패턴 (Structural Patterns)

구조 패턴은 클래스나 객체를 조합해 더 큰 구조를 만드는 방법에 대한 패턴입니다.

  • Adapter (어댑터): 인터페이스의 호환성 문제 없이 함께 작동하지 않는 클래스들이 함께 작동할 수 있도록 합니다.
  • Composite (컴포지트): 객체들을 트리 구조로 구성하여 개별 객체와 복합 객체를 클라이언트가 동일하게 다루도록 합니다.
  • Proxy (프록시): 다른 객체에 대한 접근을 제어하거나 다른 기능을 추가하기 위해 대리자나 자리표시자 역할을 하는 객체를 제공합니다.
  • Flyweight (플라이웨이트): 작은 객체들이 많이 있을 때 메모리 사용을 줄이기 위해 공유를 통해 대량의 객체들을 효율적으로 지원합니다.
  • Bridge (브리지): 추상화와 구현을 분리하여 각각 독립적으로 변형할 수 있도록 합니다.
  • Decorator (데코레이터): 객체에 동적으로 새로운 책임을 추가할 수 있으며, 서브클래스 만들기를 통한 확장의 유연한 대안을 제공합니다.
  •  

3. 행동 패턴 (Behavioral Patterns)

행동 패턴은 객체들 사이의 책임 분배와 알고리즘 캡슐화에 관련된 패턴입니다.

  • Observer (옵저버): 객체의 상태 변화를 관찰하는 관찰자들에게 통지하여, 객체 간의 일대다 의존 관계를 정의합니다.
  • Strategy (스트래티지): 알고리즘을 객체의 일부로 만들고, 동작을 변경하고 싶을 때 알고리즘을 교체할 수 있게 합니다.
  • Command (커맨드): 요청을 객체로 캡슐화하여, 사용자 정의 요청에 따른 여러 요청을 큐에 저장하거나 로깅 및 취소 기능을 지원합니다.
  • State (스테이트): 객체의 내부 상태가 변경될 때마다 객체의 행동을 변경할 수 있도록 합니다. 상태 변경에 따라 객체의 클래스가 변경되는 것처럼 보입니다.
  • Chain of Responsibility (책임 연쇄): 요청을 처리할 수 있는 객체의 체인을 만들고, 요청을 체인을 따라 전달하여 처리자를 찾습니다.
  • Mediator (미디에이터): 객체 간의 복잡한 통신과 제어 방식을 단순화하는 중재자 역할을 합니다.
  • Memento (메멘토): 객체의 상태를 이전 상태로 복원할 수 있는 기능을 제공하며, 캡슐화를 위반하지 않는 방식으로 구현합니다.
  • Visitor (방문자): 객체 구조의 요소에 수행할 연산을 나타내는 방문자를 사용하여, 구조를 변경하지 않고도 새로운 연산을 추가할 수 있습니다.
  • Interpreter (인터프리터): 주어진 언어에 대한 인터프리터를 만들기 위해, 문법을 위한 표현 방법과 문장의 해석 방법을 정의합니다.
  • Template Method (템플릿 메소드): 연산의 알고리즘의 골격을 정의하고, 일부 단계를 서브클래스에 연기하여 서브클래스가 특정 단계를 재정의할 수 있게 합니다.

이러한 패턴들은 복잡한 소프트웨어 설계 문제를 해결하기 위한 검증된 접근 방법을 제공하며, 효과적인 소프트웨어 아키텍처 설계에 기여할 수 있습니다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함
250x250