728x90
출처 : 책 - java 언어로 배우는 디자인 패턴 입문
4. Factory Method - 하위 클래스에서 인스턴스 작성하기
1. 목적
- 반환 인스턴스종류를 하위 클래스에서 결정 해주는 방식이다.
- new를 사용해서 인스턴스를 생성하는 대신에, 인스턴스 생성 메소드를 호출해서 구체적인 클래스 이름에 의한 속박에서
상퀴 클래스를 자유롭게 만든다
> 내가 이해하기로는, 인스턴스를 인터페이스로 받으면 혹시나 클래스 이름 바뀌거나 했을 때
하나하나 바꿔주지 않아도 되는 장점이 있다.
2. 예시
(1) Factory 추상 클래스
public abstract class Factory {
public final Product create(String owner) {
Product p = createProduct(owner);
registerProduct(p);
return p;
}
protected abstract Product createProduct(String owner);
protected abstract void registerProduct(Product product);
}
(2) Factory 구현 IDCardFactory
public class IDCardFactory extends Factory {
private List owners = new ArrayList();
protected Product createProduct(String owner) {
return new IDCard(owner);
}
protected void registerProduct(Product product) {
owners.add(((IDCard)product).getOwner());
}
public List getOwners() {
return owners;
}
}
(3) Product
package framework;
public abstract class Product {
public abstract void use();
}
(4) Product 구현 IDCard
public class IDCard extends Product {
private String owner;
IDCard(String owner) {
System.out.println(owner + "의 카드를 만듭니다.");
this.owner = owner;
}
public void use() {
System.out.println(owner + "의 카드를 사용합니다.");
}
public String getOwner() {
return owner;
}
}
(5) Main
public class Main {
public static void main(String[] args) {
Factory factory = new IDCardFactory();
Product card1 = factory.create("홍길동");
Product card2 = factory.create("이순신");
Product card3 = factory.create("강감찬");
card1.use();
card2.use();
card3.use();
}
}
> IDCard 인스턴스를 Product로 받고 있다. Main 클래스가 IDCard에 대해 의존하고 있지 않게 된것이다.
728x90
'개발 > 디자인 패턴' 카테고리의 다른 글
[Java 언어로 배우는 디자인 패턴 입문] 인스턴스 만들기 6. Prototype (0) | 2021.01.08 |
---|---|
[Java 언어로 배우는 디자인 패턴 입문] 인스턴스 만들기 5. Singleton (0) | 2021.01.07 |
[Java 언어로 배우는 디자인 패턴 입문] 하위 클래스 위임 3. Template Method (0) | 2021.01.07 |
[Java 언어로 배우는 디자인 패턴 입문] 입문 2. Adapter- 재이용 (0) | 2021.01.04 |
[Java 언어로 배우는 디자인 패턴 입문] 입문 1. Iterator - 순서대로 처리 (0) | 2021.01.03 |
댓글