추상 팩토리 패턴

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

추상 팩토리 패턴(Abstract factory pattern)은 다양한 구성 요소 별로 '객체의 집합'을 생성해야 할 때 유용하다. 이 패턴을 사용하여 상황에 알맞은 객체를 생성할 수 있다.

대표적인 예로, 자바 프로그래밍 언어GUI 구성 요소인 AWT/Swing 라이브러리의 룩 앤드 필 변경 기능을 들 수 있다. 메탈, 마이크로소프트 윈도, 맥 OS 등의 모양으로 변경할 수 있다. 이에 따라 추상 팩토리에 있는 기본 팩토리 객체가 변경된다. 그러면 이후로 생성되는 GUI 객체들은 전부 해당 룩앤필에 따른다.

구조[편집]

UML 클래스 및 시퀀스 다이어그램[편집]

추상 팩토리 패턴을 위한 샘플 UML 클래스 및 시퀀스 다이어그램.[1]

클래스 다이어그램[편집]

Abstract factory.svg

UML 클래스 다이어그램[편집]

Abstract factory UML.svg

Lepus3 차트 (범례)[편집]

Abstract Factory in LePUS3 vector.svg

C # 예제[편집]

interface IButton
{
    void Paint();
}

interface IGUIFactory
{
    IButton CreateButton();
}

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

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

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

class OSXButton : 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();
    }
}

각주[편집]

  1. “The Abstract Factory design pattern - Structure and Collaboration”. 《w3sDesign.com》. 2017년 8월 12일에 확인함.