Creational Pattern
https://flutterdesignpatterns.com
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Creational 패턴의 의미
"객체 생성(Creation)"에 관한 패턴들
객체를 생성하는 과정과 방법을 다루는 디자인 패턴
핵심 목적: 객체 생성의 복잡성을 숨기고, 시스템을 유연하게 만들기
클라이언트 코드가 구체적인 클래스에 의존하지 않도록 추상화
---------------------------------------------------------------------------------------------------------
Abstract Factory 패턴
특징: 관련된 객체들의 집합(제품군)을 생성
java
// 추상 팩토리
interface GUIFactory {
Button createButton();
Checkbox createCheckbox();
}
// 구체적 팩토리들
class WindowsFactory implements GUIFactory {
public Button createButton() { return new WindowsButton(); }
public Checkbox createCheckbox() { return new WindowsCheckbox(); }
}
class MacFactory implements GUIFactory {
public Button createButton() { return new MacButton(); }
public Checkbox createCheckbox() { return new MacCheckbox(); }
}
// 사용법
GUIFactory factory = new WindowsFactory();
Button button = factory.createButton(); // Windows 스타일
Checkbox checkbox = factory.createCheckbox(); // Windows 스타일Factory Method vs Abstract Factory:
Factory Method: 하나의 객체 생성
Abstract Factory: 관련된 객체들의 제품군 생성
핵심: 플랫폼별, 테마별로 일관된 객체 집합을 생성할 때 사용
Builder 패턴
특징: 복잡한 객체를 단계별로 구성
동일한 생성 과정으로 다른 표현의 객체 생성 가능
생성자 매개변수가 많을 때 가독성 향상
불변 객체 생성에 유용
핵심: Director(지시자) + Builder(구체적 생성자) 분리
java
Factory Method 패턴
특징: 객체 생성을 서브클래스에 위임
객체 생성 로직을 캡슐화
새로운 타입 추가 시 기존 코드 수정 없이 확장 가능
느슨한 결합(loose coupling) 구현
핵심: Creator 추상클래스 + ConcreteCreator들이 실제 객체 생성
java
Prototype 패턴
특징: 기존 인스턴스를 복제하여 새 객체 생성
객체 생성 비용이 클 때 복제로 성능 향상
런타임에 동적으로 객체 생성 가능
Deep Copy vs Shallow Copy 고려 필요
핵심: clone() 메서드를 통한 자기복제
java
Singleton 패턴
특징: 클래스 인스턴스를 하나만 생성하도록 보장
전역 접근점 제공
메모리 절약 및 공유 자원 관리
멀티스레드 환경에서 동시성 문제 주의
핵심: private 생성자 + static getInstance() 메서드
java
전체 Creational 패턴 정리
Singleton: 인스턴스 1개만 보장
Factory Method: 객체 생성을 서브클래스에 위임
Abstract Factory: 관련 객체들의 제품군 생성
Builder: 복잡한 객체를 단계별로 구성
Prototype: 기존 객체 복제로 새 객체 생성
Last updated