Skip to content

usn757/DesignPatternPages

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

생성 패턴 정리

생성 패턴이란?

객체 생성 과정을 추상화하여 코드의 유연성과 재사용성을 높이는 디자인 패턴 그룹입니다. 객체가 생성되는 방식이나 시점을 캡슐화하여, 시스템이 객체의 생성 방식에 독립적으로 동작하도록 합니다.


각 패턴별 정리

패턴 이름 정의 특징 장점 단점 사용 예시 고찰
싱글톤 (Singleton) 클래스의 인스턴스를 하나만 생성하고, 전역적으로 이 인스턴스에 접근할 수 있도록 합니다. 전역 접근, 단일 인스턴스 보장 리소스, 설정 관리 등 공유 객체에 유용, 접근 용이 코드 결합도 증가, 테스트 어려움, 멀티스레드 환경에서 동기화 문제 발생 가능 시스템 설정, 로깅, DB 연결, 스레드 풀, 프린터 스풀러 의존성 주입과 함께 사용 권장, Spring 프레임워크에서 싱글톤 스코프로 쉽게 구현
프로토타입 (Prototype) 기존 객체를 복제하여 새로운 객체를 생성합니다. 객체 생성 비용 감소, 성능 향상 복잡한 객체 생성, 런타임에 객체 추가/제거 용이 객체 복제 과정 복잡 (특히 순환 참조 시), 깊은 복사/얕은 복사 구분 필요 문서 편집기, 그래픽 에디터 도형 복사, 게임 캐릭터 생성, 3D 모델링 프로그램 객체 생성 비용이 높거나 복잡할 때 효과적, 복제 로직 별도 클래스 분리 권장, (경험)DOM으로 여러개의 비슷한 요소 만들때 유용,
팩토리 메서드 (Factory) 객체 생성 인터페이스를 정의하고, 실제 인스턴스 생성은 서브클래스에서 결정합니다. 객체 생성 로직과 클라이언트 코드 분리, 결합도 감소, 다양한 객체 생성 유연, 새로운 객체 타입 추가 용이 객체 생성 책임 분산, 코드 유지보수성 향상 클래스 수 증가 (상대적으로 복잡) 다양한 종류의 DB 연결, 운영체제별 UI 요소, 게임 개발(다양한 캐릭터/아이템), 문서 처리 프로그램 객체 생성 로직을 캡슐화하고 클라이언트 코드로부터 분리, OCP 원칙 준수
추상 팩토리 (Abstract) 관련된 객체들의 그룹(제품군)을 생성하는 인터페이스를 제공합니다. 여러 객체를 일관된 방식으로 생성, 제품군 교체/확장 용이 관련 객체 그룹 생성 용이, 제품 일관성 유지 새로운 제품군 추가 어려움 다양한 운영체제 UI 컴포넌트, 여러 종류의 DB 지원, 게임 개발(특정 컨셉 관련 객체 그룹) 팩토리 메서드 집합, 더 큰 범위 객체 생성 관리, 인터페이스 상속 강제 X, 팩토리 메서드는 단일 객체 일관성, 추상 팩토리는 관련 객체 그룹 일관성에 초점
빌더 (Builder) 복잡한 객체를 단계별로 생성합니다. 객체 생성과 표현을 분리하여, 동일한 생성 프로세스로 다양한 표현을 생성할 수 있습니다. 객체 생성 과정 세분화, 복잡한 객체 단순화, 가독성 향상, 다양한 설정 유연 처리, 불변 객체 생성 복잡한 객체 생성 용이, 설정 옵션 조합 유연 클래스 수 증가 (상대적으로 복잡) 복잡한 설정 옵션 객체(자동차, 컴퓨터), 다양한 조합 부품 객체, 문서 빌더, SQL 쿼리 빌더 단순 객체 생성에는 불필요한 복잡성 초래, 객체 생성 과정이 복잡하고 다양한 설정 필요 시 유용, 생성자보다 유연

생성 패턴 조합

생성 패턴들은 단독으로 사용될 수도 있지만, 여러 패턴을 조합하여 더 강력하고 유연한 객체 생성 메커니즘을 만들 수 있습니다. 몇 가지 가능한 조합은 다음과 같습니다:

  • 추상 팩토리 + 팩토리 메서드: 추상 팩토리는 제품군을 생성하는 인터페이스를 제공하고, 각 제품군 내에서 구체적인 객체 생성은 팩토리 메서드에 위임.
  • 빌더 + 프로토타입: 빌더를 사용하여 복잡한 객체를 만들고, 프로토타입을 사용하여 생성된 객체를 복제하여 다양한 변형을 생성.
  • 싱글톤 + 팩토리 메서드/추상 팩토리: 팩토리 메서드 또는 추상 팩토리 자체를 싱글톤으로 만들어 전역적으로 접근 가능한 팩토리를 제공.

결론

생성 패턴은 객체 지향 프로그래밍에서 객체 생성의 유연성과 재사용성을 높이는 데 중요한 역할을 합니다. 각 패턴의 특징과 장단점을 이해하고, 상황에 맞게 적절한 패턴을 선택하거나 조합하여 사용하는 것이 중요합니다.

Releases

No releases published

Packages

No packages published

Languages