JAVA/DesignPattern

Design Pattern 디자인 패턴 Abstract Factory Pattern 추상 팩토리 패턴

호두밥 2021. 12. 13. 23:37

추상 팩토리 패턴

추상 팩토리란 여러 팩토리를 하나로 묶는 상위 팩토리를 말합니다. (자식 클래스를 갖는 추상 클래스를 말합니다). 

2021.12.07 - [JAVA/JAVA] - Design Pattern 디자인 패턴 Factory Pattern 팩토리 패턴

 

Design Pattern 디자인 패턴 Factory Pattern 팩토리 패턴

팩토리 Factory 란? 팩토리는 객체의 생성만을 전담하는 객체입니다. Interface를 구현한 클래스가 여러 개인 경우 외부에서 각 상황에 맞는 클래스를 찾아 인스턴스를 생성해주어야 하는 불편함을

mantaray.tistory.com

 

추상 팩토리 패턴 구현 예시

스마트폰 객체를 생성하는 추상 팩토리인 스마트폰 Factory가 있습니다. 그리고 스마트폰 Factory를 상속받아 아이폰만 생성하는 아이폰 Factory와 갤럭시만 생성하는 갤럭시 Factory를 만들었습니다. 

 

스마트폰 추상 팩토리

public abstract class 스마트폰Factory {

    abstract 스마트폰 getSmartPhone(String name);

}

갤럭시 Factory

public class 갤럭시Factory extends 스마트폰Factory{
    @Override
    스마트폰 getSmartPhone(String name) {
        if("Galaxy S22".equals(name)){
            return new GalaxyS22();
        }
        if("Galaxy Ultra S22".equals(name)){
            return new GalaxyUltraS22();
        }
        throw new IllegalArgumentException("갤럭시가 아닙니다.");
    }
}

아이폰 Factory

public class 아이폰Factory extends 스마트폰Factory{

    @Override
    스마트폰 getSmartPhone(String name) {
        
        if("iPhone 13".equals(name)){
            return new iPhone13();
        }
        
        throw new IllegalArgumentException("아이폰이 아닙니다.");
    }
}

스마트폰

public interface 스마트폰 {
    String getName();
}

아이폰13

public class iPhone13 implements 스마트폰{
    @Override
    public String getName() {
        return "iPhone13";
    }
}

갤럭시 S22

public class GalaxyS22 implements 스마트폰{
    @Override
    public String getName() {
        return "GalaxyS22";
    }
}

갤럭시 울트라 S22

public class GalaxyUltraS22 implements 스마트폰{
    @Override
    public String getName() {
        return "Galaxy Ultra S22";
    }
}

참조 

*https://www.tutorialspoint.com/design_pattern/abstract_factory_pattern.htm