개발이슈/디자인패턴

추상 팩토리 (Abstract factory) 패턴

kalkin 2022. 8. 31. 10:34

팩토리 메소드 패턴과 유사하지만 클라이언트라는 개념이 추가로 존재.

 

Factory 에 해당 하는 부분에서 객체 생성시 구체적인 클래스를 의존하지 않도록

 

추상화된 클래스를 주입 받도록 한다. 

 

- Client

 

public class Client {

    public static void main(String[] args) {


        //intel brand로 주문
        NoteBookFactory intelNotebookFactory = new NoteBookFactory(new IntelPartsFactory());
        Computer intelComputer = intelNotebookFactory.createNoteBook();
        System.out.println(intelComputer.showInfo());


        //amd brand로 주문
        NoteBookFactory amdNoteBookFactory = new NoteBookFactory(new AmdPartsFactory());
        Computer amdComputer = amdNoteBookFactory.createNoteBook();
        System.out.println(amdComputer.showInfo());
    }

}

 

 

- NoteBookFactory

 

 

 

public class NoteBookFactory {

    private BrandPartsFactory brandPartsFactory;

    /**
     * 브랜드 파츠 주입
     * @param brandPartsFactory
     */
    public NoteBookFactory(BrandPartsFactory brandPartsFactory) {
        this.brandPartsFactory = brandPartsFactory;

    }

    public Computer createNoteBook() {
            NoteBook noteBook = new NoteBook();
            noteBook.installCpu(brandPartsFactory.createCpu());
            noteBook.installRam(brandPartsFactory.createRam());
            noteBook.installBrandName(brandPartsFactory.createBrandName());
            return noteBook;
    }
}

https://github.com/kalkin2/designPattern2208.git

 

팩토리 메소드 패턴과 유사한점. 

모양과 효과는 비슷하지만, 둘다 구체적인 객체 생성과정을 추상화한 인터페이스를 제공한다. 

 

 

팩토리 메소드 패턴과 다른점. 

- 팩토리 메소드 패턴은  팩토리를 구현하는 방법에 초점이 있고, 

- 추상팩토리 패턴은 팩토리를 사용하는 방법이 초점이 있다. 

 

- 팩토리 메소드 패턴은 구체적인 객체 생성 과정을 하위, 또는 구체적인 클래스로 옮기는 것이 목적. 

- 추상팩토리 패턴은 관련 있는 여러객체를 구체적인 클래스에 의존하지 않고 만들 수 있게 해주는것이 목적.

 

 

출처 : 인프런 - 백기선 디자인패턴 정리.