본문 바로가기
Study

디자인 패턴, Build Pattern (생성 패턴)

by Client. DJ 2022. 1. 22.
반응형

빌드 패턴이란?

다양하게 옵션이 달린 객체를 생성할 때, 직관적으로 생성을 도와주는 디자인 패턴입니다. 조립 방법이 필요할 때 사용하면, 보다 편하게 사용하도록 유도합니다. 조립해주는 설계도가 따로 있으므로, 이로써 원형 클래스를 가볍게 만들 수 있습니다.

예제

Option.cs

public class Option
{
    public bool IsPlayBGM { get; private set; } = false;
    public bool IsEffectBGM { get; private set; } = false;
    public bool IsPush { get; private set; } = false;

    public class Builder
    {
        private Option option = new Option();

        public static Builder Create()
        {
            return new Builder();
        }

        public Builder SetPlayBGM(bool isOn)
        {
            option.IsPlayBGM = isOn;
            return this;
        }

        public Builder SetEffectBGM(bool isOn)
        {
            option.IsEffectBGM = isOn;
            return this;
        }

        public Builder SetPush(bool isOn)
        {
            option.IsPush = isOn;
            return this;
        }

        public Option Build()
        {
            return this.option;
        }
    }
}

Main.cs

using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var option = Option.Builder.Create()
                                .SetPlayBGM(true)
                                .SetEffectBGM(true)
                                .SetPush(true)
                                .Build();

            Console.WriteLine($"IsPlayBGM: {option.IsPlayBGM}");
            Console.WriteLine($"IsEffectBGM: {option.IsEffectBGM}");
            Console.WriteLine($"IsPush: {option.IsPush}");

            // result :
            //IsPlayBGM: True
            //IsEffectBGM: True
            //IsPush: True
        }
    }
}

예제 설명

앞서 보시다시피,  Option 클래스 내부에는 Build 클래스라는 설계도 클래스가 있습니다. 생성 시, 설계도 클래스를 이용하여 직관적으로 이용가능합니다. 작성을 할 때는, 빌드 클래스를 따로 선언해주고 Setter들을 따로 만들어 준다는 개념으로 접근하면 됩니다.

사용 구분이 되는 직관성

이용이 가능하다는 부분은 아래의 그림으로 설명이 가능합니다.

설계시, 우리가 알아볼 수 있게 나온다.
반면 원형 클래스는 해당 이용 변수만 나온다.

이로써, 원형 클래스와 설계도 클래스는 나뉘게 되며 여러 작업자들도 이해하게 쉽게 이용할 수 있습니다.

패턴 사용 목적

  • 조립 방식으로 객체 생성이 필요한 경우
  • 설계도가 따로 구분이 필요한 경우
  • 표현 과정이 필요한 경우

요약

직관적이게 설계가 필요할 때, 사용하면 좋습니다. 원형 클래스와 설계도 클래스가 분리되어서 코드가 한결 깔끔해집니다.

반응형

댓글