일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 컴퓨터구조
- spring webflux
- 네트워크
- Spring
- 운영체제
- C
- Heap
- Java
- MySQL
- JavaScript
- design pattern
- Proxy
- 파이썬
- 자바
- Galera Cluster
- Algorithm
- JPA
- react
- redis
- IT
- Data Structure
- c언어
- Kafka
- 알고리즘
- OS
- 디자인 패턴
- MSA
- 자료구조
- 백준
- mongoDB
Archives
- Today
- Total
시냅스
팩토리 메소드 패턴 Java로 구현 본문
팩토리 메소드 패턴 Factory method Pattern
- 인스턴스 작성을 하위 클래스에게 위임.
- Template Method 패턴을 인스턴스 생성에 적용
- 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스에서 결정하게 함.
- 여러 상황에 따라 각각 생성될 수 있는 객체에 대한 생성을 하위 클래스에 위임
- 생성과 관련된 동일한 메서드는 상위 클래스에서 처리
- 객체를 만들어 반환하는 함수를 (생성자 대신) 제공하여 초기화 과정을 외부에서 보지 못하게 숨기고 반환 타입을 제어하는 방법.
package factory;
abstract class Car {
String productName;
public String toString() {
return productName;
}
}
class Sonata extends Car {
public Sonata() {
productName = "Sonata";
}
}
class Grandeur extends Car {
public Grandeur() {
productName = "Grandeur";
}
}
class Genesis extends Car {
public Genesis() {
productName = "Genesis";
}
}
class CarTest {
public Car produceCar(String name) {
Car car = null;
if( name.equalsIgnoreCase("Sonata")) {
car = new Sonata();
}
else if( name.equalsIgnoreCase("Grandeur")) {
car = new Grandeur();
}
else if( name.equalsIgnoreCase("Genesis")) {
car = new Genesis();
}
return car;
}
}
public class FactoryPattern {
public static void main(String[] args) {
CarTest test = new CarTest();
Car car = test.produceCar("Sonata");
Car car2 = test.produceCar("grandeur");
Car car3 = test.produceCar("genesis");
System.out.println(car);
System.out.println(car2);
System.out.println(car3);
}
}
'디자인 패턴' 카테고리의 다른 글
템플릿 메소드 패턴 Java로 구현 (0) | 2022.08.17 |
---|---|
전략 패턴 Strategy Pattern - Java로 구현 (0) | 2022.08.02 |
State Pattern - java로 구현 (0) | 2022.08.02 |
데코레이터 패턴, Decorator Pattern Java로 구현 (0) | 2022.07.25 |
싱글톤 패턴 singleton pattern Java로 구현 (0) | 2022.07.25 |
Comments