Factory Method
Product 객체를 직접 생성하지 않고 Factory 클래스에서 Product를 만든다.
여러 Product 구현체가 있고 그 Product 를 만드는 Factory 구현체가 있다.
각각의 Factory 구현체가 그에 해당하는 Product 객체 생성의 책임을 가지고 있다.
객체 생성에 필요한 과정과 메서드를 템플릿 처럼 구성해놓고
과정과 메서드의 내부 동작은 Product 구현체와 Factory 구현체에서 유연하게 만들 수 있다.
장점
생성자와 구현 객체의 강한 결합을 피할 수 있다.
팩토리 메서드를 통해 객체 생성 후 공통으로 할 일을 수행하도록 지정할 수 있다.
캡슐화, 추상화를 통해 생성되는 객체의 구체적인 타입을 감출 수 있다.
SRP(Single Responsibility Principle)와 OCP(Open Closed Principle)를 준수한다.
단점
구현체마다 팩토리 클래스가 생성되므로 서브 클래스 수가 매우 많다.
예제.
public abstract class Bread {
BreadResult breadResult = new BreadResult();
@Override
public String toString() {
....
}
public abstract void setType();
public abstract void setRecipe();
}
public abstract class BreadFactory {
public Bread newBread() {
Bread bread = this.creatBread();
bread.setType();
bread.setRecipe();
return bread;
}
abstract Bread creatBread();
}
public class ButterBread extends Bread {
@Override
public void setType() {
super.breadResult.breadType = "butter";
}
@Override
public void setRecipe() {
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
...
super.breadResult.recipe = map;
}
}
public class ButterBreadFactory extends BreadFactory {
@Override
Bread creatBread() {
return new ButterBread();
}
}
참고 자료
'Language > Java' 카테고리의 다른 글
Jmeter STOMP test (WebSocket Samplers) (0) | 2024.01.27 |
---|---|
java thread (자바의 정석) (1) | 2023.12.10 |
java object equals (0) | 2023.08.08 |
자바) ArrayList LinkedList 시간 비교 (23-07-06) (0) | 2023.07.13 |
자바) ArrayList Capacity (23-07-06) (0) | 2023.07.13 |