Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Go Design Patterns #Builder

Go Design Patterns #Builder

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-12 06:18:02216semak imbas

Go Design Patterns #Builder

pembina

Corak Pembina ialah corak reka bentuk ciptaan yang menyediakan penyelesaian yang fleksibel untuk membina objek kompleks langkah demi langkah. Ia membolehkan anda mencipta representasi objek yang berbeza menggunakan proses pembinaan yang sama.

Pernyataan Masalah

  • Apabila mencipta objek melibatkan berbilang langkah atau parameter, mengurus proses pembinaan boleh menjadi menyusahkan.
  • Anda ingin mengelakkan masalah "pembina teleskop" (di mana pembina mengambil banyak parameter) dan memastikan objek anda tidak berubah selepas penciptaan.

Faedah Corak Pembina

  • Fleksibiliti: Bina perwakilan objek yang berbeza dengan mudah.
  • Kebolehbacaan: Perangkaian kaedah menjadikan proses pembinaan jelas dan ringkas.
  • Encapsulation: Logik pembinaan terkandung dalam pembina, memisahkannya daripada kod pelanggan.

Contoh Dunia Nyata

Pertimbangkan untuk membina komputer. Komputer boleh mempunyai pelbagai komponen seperti CPU, RAM, storan, dsb.

Daripada memerlukan semua parameter ini dalam pembina, corak pembina membolehkan anda menetapkan setiap komponen langkah demi langkah.

Perlaksanaan

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)
}

Produk (Komputer): Mewakili objek kompleks yang akan dibina dengan pelbagai atribut.

Antara Muka Pembina (Pembina Komputer): Mentakrifkan kaedah untuk menetapkan setiap komponen produk.

Pembina Konkrit (PCBuilder): Melaksanakan antara muka pembina.

  • Menyediakan kaedah untuk menetapkan CPU, RAM, Storan dan OS, mengembalikan pembina itu sendiri untuk merantai kaedah.
  • Kaedah Build() mengembalikan objek Komputer akhir.

Kod Pelanggan: Mencipta tika pembina baharu.

  • Konfigurasikan komputer langkah demi langkah menggunakan kaedah rantaian.
  • Panggil Build() untuk mendapatkan semula produk akhir.

Atas ialah kandungan terperinci Go Design Patterns #Builder. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Go Design Corak #KilangArtikel seterusnya:Go Design Corak #Kilang