Das Builder-Muster ist ein kreatives Entwurfsmuster, das eine flexible Lösung für die schrittweise Konstruktion komplexer Objekte bietet. Es ermöglicht Ihnen, mit demselben Konstruktionsprozess verschiedene Darstellungen eines Objekts zu erstellen.
Erwägen Sie den Bau eines Computers. Ein Computer kann verschiedene Komponenten wie CPU, RAM, Speicher usw. haben.
Anstatt alle diese Parameter in einem Konstruktor zu benötigen, können Sie mit dem Builder-Muster jede Komponente Schritt für Schritt festlegen.
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) }
Produkt (Computer): Stellt das komplexe Objekt dar, das mit verschiedenen Attributen erstellt wird.
Builder-Schnittstelle (ComputerBuilder): Definiert Methoden zum Festlegen jeder Komponente des Produkts.
Concrete Builder (PCBuilder): Implementiert die Builder-Schnittstelle.
Client-Code: Erstellt eine neue Builder-Instanz.
Das obige ist der detaillierte Inhalt vonGehen Sie zu Design Patterns #Builder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!