본문 바로가기

IT/GOF 디자인패턴

[GOF] 생성패턴이란?

안녕하세요 남갯입니다

 

오늘은 GOF 생성패턴에 대해 포스팅 해보려고 합니다.

 

생성패턴이란?

생성패턴은 인스턴스를 만드는 절차를 추상화하는 패턴.

객체를 생성-합성 하는 방법이나 객체의 표현방법과 시스템을 분리해 줍니다.

상속보다는 복합을 사용하는쪽으로 진화되어 가면서 더 중요해지는 추세.

 

생성패턴의 특징

1. 생성패턴은 시스템이 어떤 구체 클래스를 사용하는지에 대한 정보를 캡슐화

2. 생성패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 서로 맞붙는지에 대한 부분을 완전히 가려줍니다.

즉 무엇이 생성되고 누가 이것을 생성하며 어떻게 생성이 되는지 언제 생성할 것이지에 대한 유연성을 확보 가능

 

 

추상팩토리패턴

 

의도

상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다.

 

각 다른 인터페이스를 가진 위젯이 있는데 구체적 사용자 인터페이스 위젯을 사용하지 말고, 추상클래스인 WidgetFactory를 정의하여 해결하는것이 좋다. 즉 인터페이스 요소들을 생성할 수 있는 인터페이스를 정의.

 

활용성

-객체가 생성되거나 구성-표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할때

- 여러 제품군중 하나를 선택해서 시스템을 설정해야하고 한번 구상한 제품을 다른것으로 대체할 수 있을때

- 관련된 제품 객체들이 함께 사용되도록 설계되었고, 이부분에 대한 제약이 외부에도 지켜지도록 하고싶을 때

- 제품에 대한 클래스 라이브러리를 제공하고, 그들의 구현이 아닌 인터페이스를 노출시키고 싶을 때

 

결과

- 구체적인 클래스를 분리

- 제품군을 쉽게 대체 가능하도록 변경

- 제품사이의 일관성을 증진

- 새로운 종류의 제품을 제공하기 어려움

 

구현

추상팩토리 패턴을 구현하는 기법은 여러가지입니다. 

 

- 팩토리를 단일체로 정의합니다.

- 제품을 생성합니다. (구현이 약간 다르다면 각 제품군을 위한 새로운 구체 팩토리 서브클래스가 필요)