Creation Design Pattern
Creation Design Pattern(생성 디자인 패턴)
오프젝트를 생성하는 방법을 다루는 패턴
- Factory Pattern
- Abstract Factory + Factory Method Pattern
- Builder Pattern
- Singleton
- Prototype
Factory Pattern
- 객체지향에서 팩토리란 다른 클래스의 객체를 생성하는 클래스를 말함
- 일반적으로 팩토리는 객체와 관련 메소드로 구성
- 클라이언트는 특정 인자와 함께 메소드를 호출하고
팩토리는 해당 객체를 생성하고 반환.
공장은 함수 또는 클래스로 나타낼 수도 있음
공장에 원하는 물건을 만들어 달라고 요청하면 그 제품을 만들 수 있음.
Robot은 추상클래스 함수(인자) 간접적으로. 생성과정에 관여 X
UML로 표현
X친건 굳이 표현할 필요는 없는 클래스
Factory Pattern
- 사용자가 오브젝트들의 생성과정을 클라이언트가 직접 다룰 필요가 없게됨
- 오브젝트의 복잡한 생성과정을 팩토리 안에 숨겨두고
클라이언트는 "고양이/강아지 만 만들어주세요"라고 하면
필요한 오브젝트만 만들어서 리턴 해주는 개념임
Factory Pattern은 Factory method pattern, Singleton pattern, Builder pattern에서 응용됨.
Factory Method Pattern
이런 경우에 공장 하나에 인터페이스를 둔다.
createRobot() 이라는 함수를 생성해줘야함.
- Factory Pattern 의 확장버전
- Factory 자체에 여러 기능을 추가하고 싶을 때 사용
- 이럴 때 단순한 기존 Factory Pattern 만으로는 추가기능을 구현하는데 어려움이 있음
-> Factory Method Pattern 등장
- Factory Interface 를 따로 만들어서 각 제품에 특화된 Factory 를 만들어
특화된 Factory 에 여러 기능들을 추가할 수 있도록 함
Abstract Factory Pattern
어떤 제품이 여러개가 있는데
이 제품에 여러개의 테마가 붙을 수 있다. 이럴 때 matrix로 표현 가능하다
또한 UI로 예를 들 수도 있겠다. 이럴 때 객체를 어떻게 만들까
공장 인터페이스를 두는데 여러 생성 함수들이 있을 수 있다.
이 팩토리를 상속 받음.
- 각각의 테마를 가진 여러가지 오브젝트들을 하나의 팩토리에서 만들고자할 때
이러한 오브젝트들을 만들어 내는 패턴을 Abstract Factory Pattern이라함
- 팩토리 자체를 추상화 시킴으로써 오브젝트들을 쉽게 생성할 수 있음.