반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

꿈꾸는 사람.

[디자인 패턴][팩토리 패턴 1] 팩토리 메소드 패턴 본문

IT/Language_Design Patterns

[디자인 패턴][팩토리 패턴 1] 팩토리 메소드 패턴

현무랑 니니 2016. 1. 10. 01:27
반응형

느슨한 결합을 이용하는 객체지향 디자인인 팩토리 패턴에 대한 글이다.

객체의 인스턴스를 만드는 작업은 항상 공개되어야 하는 것은 아니다.

팩토리 패턴을 이용하여 불필요한 의존성을 없앨 수 있다.

java의 "new"는 구상 클래스의 인스턴스를 만드는 것이다.


1. 추상(abstract) vs 구상(concrete)

 추상(abstract) 클래스

 구현은 제공하지 않는 'operation'을 정의하고 있는 'class'이다.

 인스턴스를 만들 수 없는 클래스.

 구상(concrete) 클래스

 추상(abstract)가 아닌 클래스이다. 오퍼레이션이 구현(implement)을 제공하는 클래스이다.


팩토리 패턴에는 추상 클래스를 이용하는 추상 팩토리 패턴이 있어 해당 용어에 대한 간단한 정의를 알아 보았다.

2. 팩토리 패턴 개념

객체 생성을 처리하는 클래스를 팩토리라고 한다.

팩토리 메소드 패턴(Factory Method Pattern)

(정의)

팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래서에서 결정하게 만든다.

(팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에 맡기는 것이다.)

서브클래스에서 어떤 객체를 만들지를 결정하게 하여 객체 생성을 캡슐화 한다.

이 패턴에는 다음 두 가지 클래스들이 있다.

생산자(Creator) 클래스

 추상 생산자 클래스

 (abstract creator class)

 서브클래스에서 제품을 생산하기 위해 구현할 추상 팩토리 메소드를 정의한다.

 구상 생산자

 (concrete creators)

 제품을 생산하는 클래스. 즉, 구상 클래스 인스턴스를 만들어 낸다. factoryMethod()를 구현해야 한다.


제품(Product) 클래스

 추상 제품 클래스

 (abstract product class)

 제품에 대한 개념 클래스.

 내부에 구현이 필요한 함수와 필요없는 함수가 공존할 경우 추상클래스로 구현. 

 (내부에 모든 함수가 서브클래스에서 구현이 되어야 한다면 인터페이스로 구현)

 구상 제품 클래스

 (concrete product class)

 실제 제품에 해당하는 클래스.

제품 클래스에서는 모두 같은 인터페이스를 구현해야 한다.

그래야 제품을 사용하는 클래스가 구상 클래스가 아닌 인터페이스로 객체를 참조할 수 있다.

-. 추상 생산자 클래스

추상 팩토리 패턴(Abstract Factory Pattern)

반응형
Comments