2024년 1월 7일
생성 패턴 (Creational Pattern)
1. 불필요 의존성 제거, Factory Method 패턴
(1) Factory Method 패턴의 개념 및 사용 목적
개념 | 사용 목적 |
---|---|
클래스의 인스턴스 생성을 하위 클래스에게 맡기도록 객체를 생성하기 위한 인터페이스를 정의하는 디자인 패턴 | – 결합 문제 해결 위한 불필요한 의존성 제거 – 프레임워크와 실제 인스턴스 생성을 분리 |
(2) Factory Method 패턴의 클래스 다이어그램
(3) Factory Method 패턴의 구성요소
구성요소 | 역할 |
---|---|
Product | 인스턴스가 가져야 할 인터페이스를 결정 |
Creator | Product를 생성하는 추상 클래스 |
ConcreteProduct | 구체적인 내용을 추가하여 구체적인 제품 결정 |
ConcreteCreator | 구체적인 내용을 추가하여 구체적인 제품 생성 클래스를 결정 |
2. API 기반 부품 조립/제품 완성, Abastact Factory 패턴
(1) Abastact Factory 패턴의 개념 및 사용 목적
개념 | 사용 목적 |
---|---|
인터페이스(API) 기반 서로 연관되거나 의존 객체를 구현 클래스 지정 없이 생성 가능한 디자인 패턴 | – 구상 클래스에 의존하지 않고, 추상화 된 것에 의존(의존성 역전 원칙) – 인터페이스(API)만 사용하여 제품 제작 |
(2) Abastact Factory 패턴의 클래스 다이어그램
(3) Abastact Factory 패턴의 구성요소
구성요소 | 역할 |
---|---|
AbstractProduct | 만들어지는 추상적인 부품이나 제품의 인터페이스(API) 결정 |
AbstractFactory | AbstractProduct의 인스턴스를 만들기 위한 인터페이스(API) 결정 |
Client | 인터페이스(API)만 사용하여 작업 |
ConcreteProduct | AbstractProduct의 인터페이스(API)를 구현 |
ConcreteFactory | AbstractFactory의 인터페이스(API)를 구현 |
3. 복잡한 인스턴스를 조립, Builder 패턴
(1) Builder 패턴의 개념 및 사용 목적
개념 | 사용 목적 |
---|---|
복잡한 구조의 프로그램에서 구조를 가진 인스턴스를 만들어가는 디자인 패턴 | – 크고 복잡한 구조를 가진 프로그램 작성 – 전체를 구성하는 각 부분 별 작성 |
(2) Builder 패턴의 클래스 다이어그램
(3) Builder 패턴의 구성요소
구성요소 | 역할 |
---|---|
Builder | 인스턴스를 생성하기 위한 인터페이스(API) 결정 |
ConcreteBuilder | 인터페이스(API)를 구현, 실제 인스턴스 생성으로 호출되는 메소드 정의 |
Director | 인터페이스(API)를 사용하여 인스턴스를 생성 |
4. 복사하여 인스턴스 생성, Prototype 패턴
(1) Prototype 패턴의 개념 및 사용 목적
개념 | 사용 목적 |
---|---|
클래스에서 인스턴스 생성 대신 인스턴스로부터 다른 인스턴스를 생성하는 디자인 패턴 | – 종류가 너무 많아 클래스로 정리 불가능 경우 – 클래스로부터 인스턴스 생성이 어려운 경우 – 프레임워크와 생성 인스턴스 분리하는 경우 |
(2) Prototype 패턴의 클래스 다이어그램
(3) Prototype 패턴의 구성요소
구성요소 | 역할 |
---|---|
Prototype | 인스턴스를 복사하여 새로운 인스턴스를 만들기 위한 메소드 결정 |
ConcretePrototype | 인스턴스를 복사하여 새로운 인스턴스를 만드는 메소드 구현 |
Client | 인스턴스를 복사하는 메소드를 이용하여 새로운 인스턴스 생성 |
5. 프로그램 내 하나의 인스턴스만 생성, Singleton 패턴
(1) Singleton 패턴의 개념 및 사용 목적
개념 | 사용 목적 |
---|---|
프로그램 내 인스턴스가 하나만 존재하는 것을 보증하는 디자인 패턴 | – 컴퓨터 시스템 전체 표현 – 현재 시스템 설정 표현 – 커넥션 풀, 스레드 풀 표현 |
- 인스턴스가 여러 개 존재하면 인스턴스 간 서로 영향을 미쳐 예상치 못한 버그가 발생할 수 있으므로 인스턴스가 하나뿐인 것을 보장하는 전제 조건에서 프로그래밍
(2) Singleton 패턴의 클래스 다이어그램
(3) Singleton 패턴의 구성요소
구성요소 | 역할 |
---|---|
Singleton | 유일한 인스턴스를 얻기 위한 static 메소드 보유하며, 항상 같은 인스턴스 반환 |
[참고]
- 영진닷컴, JAVA 언어로 배우는 디자인 패턴 입문: 쉽게 배우는 GoF의 23가지 디자인 패턴