본문 바로가기
객체 지향 프로그래밍

팩토리 메서드 패턴 vs 추상 팩토리 패턴

by 책 읽는 개발자_테드 2021. 10. 26.
반응형

학습 목표

· 팩토리 메서드 패턴

· 추상 팩터리 패턴

· 팩토리 메서드 패턴 vs 추상 팩토리 패턴


팩토리 메서드 패턴

https://scshim.tistory.com/417

 

추상 팩터리 메서드

· 메서드의 호출에 대한 반환값으로 객체를 생산하는 디자인 패턴

· 사용 이유:

   - 어떤 객체를 생성할지 예상이 불가능한 상황에서, 서로 다른 데이터에 따라 서로 다른 객체를 생성할 수 있음

   - 공통 분모를 가지는 부모 클래스 또는 인터페이스를 데이터를 바탕으로 구성할 수 있음

   - 복잡한 객체를 인스턴스화 하는 논리적인 로직을 따로 분리할 수 있음

 

▶ 예시 - OS에 따라 서로 다른 버튼을 생성하는 프로그램

 

interface IButton {
    void Paint();
}

interface IGUIFactory {
    IButton CreateButton();
}

class WinFactory implements IGUIFactory {
    public IButton CreateButton() {
        return new WinButton();
    }
}

class OSXFactory implements IGUIFactory {
    public IButton CreateButton() {
        return new OSXButton();
    }
}

class WinButton implements IButton {
    public void Paint() {
        //Render a button in a Windows style
    }
}

class OSXButton implements IButton {
    public void Paint() {
        //Render a button in a Mac OS X style
    }
}

class Program {
    static void Main() {
        var appearance = Settings.Appearance;

        IGUIFactory factory;
        switch (appearance) {
            case Appearance.Win:
                factory = new WinFactory();
                break;
            case Appearance.OSX:
                factory = new OSXFactory();
                break;
            default:
                throw new System.NotImplementedException();
        }
        var button = factory.CreateButton();
        button.Paint();
    }
}

 

· 추상 팩터리 패턴 클래스 다이어그램

 

팩토리 메서드 패턴 vs 추상 팩토리 패턴

· 팩토리 메서드 패턴은 하나의 메서드에서 여러 개의 객체를 생성하는 패턴

· 하나의 오브젝트가 하나의 객체를 생성하는 패턴

 

참고

https://huisam.tistory.com/entry/AbstractFactory?category=697928

https://ko.wikipedia.org/wiki/추상_팩토리_패턴

 

반응형

댓글