CS/Design Pattern

Creation Design Pattern

dawonny 2022. 3. 16. 04:11
728x90
반응형
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이라함

 

- 팩토리 자체를 추상화 시킴으로써 오브젝트들을 쉽게 생성할 수 있음.

728x90
반응형