디자인 패턴
개발 시 반복적으로 등장하는 문제를 해결하기 위한 일반화 된 솔루션
객체 지향 4대 특성(캡슐화, 상속, 추상화, 다형성)과 SOLID원칙을 기반으로 구현
* 장점 : 코드 유지보수 효율성 향상
디자인 패턴 분류
- 생성 패턴(Creational Patterns) : 새로운 것을 만들어내는 방법과 관련된 패턴
- 구조 패턴(Structual Patterns) : 여러 부품을 어떻게 조립하고 연결하는지에 대한 패턴
- 행동 패턴(Behavioral Patterns) : 부품이 서로 어떻게 상호작용하는지에 대한 패턴
생성 패턴
- 싱글톤(Singleton) : 하나의 클래스 인스턴스를 전역에서 접근 가능하게 하여 해당 인스턴스가 단 한번 생성되도록 보장하는 패턴
- 팩토리 메서드(Factory Method) : 객체를 생성하기 위한 인터페이스를 정의하고 서브 클래스에서 어떤 클래스의 인스턴스를 생성할지 결정하는 패턴
- 추상 팩토리(Abstract Factory) : 관련된 객체들의 집합을 생성하는 인터페이스를 제공하고 구체적인 팩토리 클래스를 통해 객체 생성을 추상화하는 패턴
- 빌더(Builder) : 복잡한 객체의 생성 과정을 단순화하고 객체를 단계적으로 생성 및 구성하는 패턴
- 프로토타입(Prototype) : 객체를 복제하여 새로운 객체를 생성하는 패턴, 기존 객체를 템플릿으로 사용하는 패턴
구조 패턴
- 어댑터(Adapter) : 인터페이스 호환성을 제공하지 않는 클래스를 사용하기 위해 래퍼(Wrapper)를 제공하는 패턴
- 브릿지(Bridge) : 추상화와 구현을 분리하여 두가지를 독립적으로 확장할 수 있는 패턴
- 컴포지트(Composite) : 개별 객체와 복합 객체를 동일하게 다루어 트리 구조의 객체를 구성하는 패턴
- 데코레이터(Decorator) : 객체에 동적으로 새로운 기능을 추가하여 객체를 확장할 수 있는 패턴
- 퍼사드(Facade) : 서브 시스템을 더 쉽게 사용할 수 있도록 단순한 인터페이스를 제공하는 패턴
- 플라이웨이트(Flyweight) : 공유 가능한 객체를 통해 메모리 사용을 최적화하는 패턴
- 프록시(Proxy) : 다른 객체에 대한 대리자(Proxy)를 제공하여 접근 제어, 지연 로딩 등을 구현하는 패턴
행위 패턴
- 옵저버(Observer) : 객체 간의 일대다 종속 관계를 정의하여, 한 객체의 상태 변경이 다른 객체들에게 알려지는 패턴
- 전략(Strategy) : 알고리즘을 정의하고, 실행 중에 선택할 수 있는 패턴
- 커맨드(Command) : 요청을 객체로 캡슐화하여 매개변수화 하고, 요청을 큐에 저장하거나 로깅하고 실행을 지연하는 패턴
- 상태(State) : 객체의 상태를 캡슐화하고, 상태 전환을 관리하는 패턴
- 책임 연쇄(Chain of Responsibility) : 요청을 보내는 객체와 이를 처리하는 객체를 분리하여, 다양한 처리자 중 하나가 요청을 처리하는 패턴
- 방문자(Visitor) : 객체 구조를 순회하면서 다양한 연산을 수행할 수 있는 패턴
- 인터프리터(Interpreter) : 언어나 문법에 대한 해석기를 제공하여 주어진 언어로 표현된 문제를 해결하는 패턴
- 메멘토(Memento) : 객체의 내부 상태를 저장하고 복원할 수 있는 기능을 제공하는 패턴
- 중재자(Mediator) : 객체 간의 상호 작용을 캡슐화하여, 객체 간의 직접적인 통신을 방지하는 패턴
- 템플릿 메서드(Template Method) : 알고리즘의 구조를 정의하면서 하위 클래스에서 각 단계의 구현을 제공하는 패턴
- 이터레이터(Iterator) : 컬렉션 내의 요소들에 접근하는 방법을 표준화하여 컬렉션의 내부 구조에 독립적으로 접근할 수 있는 패턴
참고자료
https://ittrue.tistory.com/550
[OOP] 디자인 패턴(Design Pattern)이란? - 장점 및 종류
디자인 패턴(Design Pattern)이란? 디자인 패턴은 개발하면서 발생하는 반복적인 문제들을 어떻게 해결할 것인지에 대한 해결 방안으로 실제 현업에서 비즈니스 요구 사항을 프로그래밍으로 처리하
ittrue.tistory.com
https://yozm.wishket.com/magazine/detail/2122/
자바 구조 패턴은 어떻게 쓰일까? | 요즘IT
자바 디자인 패턴 시리즈 두 번째 편으로 이번에는 구조 패턴(Structural Patterns)의 종류와 적용 방법을 살펴볼까 합니다. 지난 편에서 살펴 본 어댑터 패턴(Adaptor Pattern) 역시 대표적인 구조 패턴이
yozm.wishket.com
'OOP' 카테고리의 다른 글
[OOP] 팩토리 메서드 패턴(Factory Method Pattern) (0) | 2025.01.20 |
---|---|
[OOP] 싱글톤 패턴(Singleton Pattern) (0) | 2025.01.16 |
[OOP] 객체 지향 설계 5원칙(SOLID) : DIP(Dependency Inversion Principle)-의존 역전 원칙 (0) | 2025.01.13 |
[OOP] 객체 지향 설계 5원칙(SOLID) : ISP(Interface Segregation Principle)-인터페이스 분리 원칙 (1) | 2025.01.10 |
[OOP] 객체 지향 설계 5원칙(SOLID) : LSP(Liskov Substitution Principle)-리스코프 치환 원칙 (0) | 2025.01.09 |