디자인 패턴으로 이동 #Builder

Mary-Kate Olsen
풀어 주다: 2024-10-12 06:18:02
원래의
219명이 탐색했습니다.

Go Design Patterns #Builder

빌더

빌더 패턴은 복잡한 객체를 단계별로 구성하기 위한 유연한 솔루션을 제공하는 창조적인 디자인 패턴입니다. 동일한 구성 프로세스를 사용하여 객체의 다양한 표현을 만들 수 있습니다.

문제 설명

  • 객체 생성에 여러 단계나 매개변수가 포함되는 경우 생성 프로세스를 관리하는 것이 번거로울 수 있습니다.
  • '텔레스코프 생성자' 문제(생성자가 많은 매개변수를 사용하는 경우)를 피하고 생성 후 객체가 불변인지 확인하고 싶습니다.

빌더 패턴의 이점

  • 유연성: 객체의 다양한 표현을 쉽게 구성할 수 있습니다.
  • 가독성: 메소드 체인을 사용하면 구성 프로세스가 명확하고 간결해집니다.
  • 캡슐화: 구성 로직이 빌더 내에 캡슐화되어 클라이언트 코드와 분리됩니다.

실제 사례

컴퓨터 조립을 고려해 보세요. 컴퓨터에는 CPU, RAM, 스토리지 등 다양한 구성요소가 있을 수 있습니다.

생성자에서 이러한 모든 매개변수를 요구하는 대신 빌더 패턴을 사용하면 각 구성요소를 단계별로 설정할 수 있습니다.

구현

package main

import "fmt"

// Product
type Computer struct {
    CPU     string
    RAM     string
    Storage string
    OS      string
}

// Builder Interface
type ComputerBuilder interface {
    SetCPU(cpu string) ComputerBuilder
    SetRAM(ram string) ComputerBuilder
    SetStorage(storage string) ComputerBuilder
    SetOS(os string) ComputerBuilder
    Build() *Computer
}

// Concrete Builder
type PCBuilder struct {
    computer *Computer
}

func NewPCBuilder() *PCBuilder {
    return &PCBuilder{&Computer{}}
}

func (b *PCBuilder) SetCPU(cpu string) ComputerBuilder {
    b.computer.CPU = cpu
    return b
}

func (b *PCBuilder) SetRAM(ram string) ComputerBuilder {
    b.computer.RAM = ram
    return b
}

func (b *PCBuilder) SetStorage(storage string) ComputerBuilder {
    b.computer.Storage = storage
    return b
}

func (b *PCBuilder) SetOS(os string) ComputerBuilder {
    b.computer.OS = os
    return b
}

func (b *PCBuilder) Build() *Computer {
    return b.computer
}

// Client Code
func main() {
    builder := NewPCBuilder()

    computer := builder.
        SetCPU("Intel i7").
        SetRAM("16GB").
        SetStorage("1TB SSD").
        SetOS("Windows 7").
        Build()

    fmt.Printf("Computer built: %+v\n", computer)
}
로그인 후 복사

제품(컴퓨터) : 다양한 속성을 가지고 구축될 복합 객체를 나타냅니다.

빌더 인터페이스(ComputerBuilder): 제품의 각 구성 요소를 설정하는 방법을 정의합니다.

Concrete Builder(PCBuilder): 빌더 인터페이스를 구현합니다.

  • CPU, RAM, 스토리지, OS를 설정하고 메소드 체이닝을 위해 빌더 자체를 반환하는 메소드를 제공합니다.
  • Build() 메서드는 최종 Computer 개체를 반환합니다.

클라이언트 코드: 새 빌더 인스턴스를 생성합니다.

  • 메서드 체이닝을 사용하여 컴퓨터를 단계별로 구성합니다.
  • Build()를 호출하여 최종 제품을 검색합니다.

위 내용은 디자인 패턴으로 이동 #Builder의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿