ビルダー パターンは、複雑なオブジェクトを段階的に構築するための柔軟なソリューションを提供する創造的なデザイン パターンです。同じ構築プロセスを使用して、オブジェクトのさまざまな表現を作成できます。
コンピューターを構築することを考えてみましょう。コンピューターには、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): 製品の各コンポーネントを設定するためのメソッドを定義します。
コンクリート ビルダー (PCBuilder): ビルダー インターフェイスを実装します。
クライアント コード: 新しいビルダー インスタンスを作成します。
以上がGo デザイン パターン #Builderの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。