일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ubuntu
- 손민한
- 안드로이드
- 뉴스타파
- 야구
- 김경문
- 문파문파
- 블로그
- 국정원
- 문파문파 공략
- 태그를 입력해 주세요.
- 인공지능
- 애플
- mysql
- 해외직구
- 타이젠
- Linux
- 조세피난처
- 리뷰
- Tizen
- NC 다이노스
- 프로야구
- 데이터베이스
- arm
- ubuntu 12.04
- 우분투
- 단통법
- python
- NC다이노스
- 디자인 패턴
- Today
- Total
꿈꾸는 사람.
[디자인 패턴][팩토리 패턴 1] 팩토리 메소드 패턴 본문
느슨한 결합을 이용하는 객체지향 디자인인 팩토리 패턴에 대한 글이다.
객체의 인스턴스를 만드는 작업은 항상 공개되어야 하는 것은 아니다.
팩토리 패턴을 이용하여 불필요한 의존성을 없앨 수 있다.
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)
'IT > Language_Design Patterns' 카테고리의 다른 글
[Java] Swing. 개요. 컨테이너 예제. (0) | 2016.02.25 |
---|---|
[디자인 패턴][퍼사드 패턴] 클라이언트를 복잡한 시스템과 분리. (0) | 2016.01.27 |
[디자인 패턴][어댑터 패턴] (0) | 2016.01.19 |
[디자인 패턴][싱글턴 패턴] 안드로이드 6.0 싱글턴 패턴 예제. (0) | 2016.01.12 |
[Android] Wi-Fi 서비스에서 JAVA Hashmap 사용 예. (2) | 2015.03.03 |