PSD( Private-Self-Development )

추상 팩토리 패턴 본문

Backend/디자인패턴

추상 팩토리 패턴

chjysm 2023. 5. 9. 16:17

추상 팩토리 패턴

생성 메서드만을 추상화하는 팩토리 메서드 패턴에서 더 나아가,

부모클래스 자체를 추상화 하여, 

이를 구현하는 여러 개의 자식 팩토리 클래스(객체 모음)를 만드는 패턴이다.

 

추상 팩토리 패턴의 장점

  • 팩토리에서 생성되는 객체들의 상호 호환성 보장
  • 단일 책임 원칙 
  • 개방/폐쇠 원칙 
  • 다형성 충족 

 

추상 팩토리 패턴의 단점

  • 관리해야 하는 객체가 많아지므로 공통적으로 적용되어야 하는 내용이 수정되어야 할 경우, 
    공수가 더 들어간다. 
  • 구조가 복잡해진다.

 

팩토리 메서드 패턴 과의 차이점 

  추상화 대상 자식 클래스
팩토리 메서드  생성 메서드를 추상화 1개의 자식 생성 클래스 만을 생성하며,
생성 메서드를 오버라이딩 하여 
인자 값을 통한, 여러 클래스를 생성한다.
추상 팩토리 부모 클래스 자체를 추상화 모음 별로 다수의 자식 생성 클래스를 생성한다. 

 

추상 팩토리 패턴 구현

public abstract class Factory {
    public abstract Door createDoor();		// 생성하려는 객체 또한 추상화 필요
    public abstract Window createWindow();
}

// 자식 생성 클래스
public class KoreaFactory extends Factory{
    @Override
    public Door createDoor() {
        return new KoreaDoor();
    }

    @Override
    public Window createWindow() {
        return new KoreaWindow();
    }
}

public class JapanFactory extends Factory {
    @Override
    public Door createDoor() {
        return new JapanDoor();
    }

    @Override
    public Window createWindow() {
        return new JapanWindow();
    }
}

 

언제 사용해야 할까??

생성해야 하는 객체가 많아지고 다양해져 이를 하나의 성격으로 묶을 필요가 있을 경우

 


참조 : https://refactoring.guru/ko/design-patterns/abstract-factory

'Backend > 디자인패턴' 카테고리의 다른 글

프로토타입 패턴  (0) 2023.05.10
빌더 패턴  (0) 2023.05.09
팩토리 메서드 패턴  (0) 2023.03.21
싱글톤 패턴(Singleton pattern)  (0) 2023.03.20
팩토리 패턴  (1) 2023.03.15