Golangでのファクトリーデザインパターンの実装方法は何ですか?
Go言語では、工場設計パターンを実装するために、関数、メソッド、または構造体を使用することができます。
- 関数を使用してファクトリーパターンを実装する:パラメーターを渡すと、対応するオブジェクトインスタンスを作成して返す関数を定義します。
type Product interface {
Produce()
}
type ConcreteProductA struct {}
func (p *ConcreteProductA) Produce() {
fmt.Println("Producing Concrete Product A.")
}
type ConcreteProductB struct {}
func (p *ConcreteProductB) Produce() {
fmt.Println("Producing Concrete Product B.")
}
func CreateProduct(productType string) Product {
switch productType {
case "A":
return &ConcreteProductA{}
case "B":
return &ConcreteProductB{}
default:
return nil
}
}
- 工場パターンを実現する方法: ファクトリー構造体を定義し、その構造体内にオブジェクトインスタンスを作成する方法を含める。
type Product interface {
Produce()
}
type ConcreteProductA struct {}
func (p *ConcreteProductA) Produce() {
fmt.Println("Producing Concrete Product A.")
}
type ConcreteProductB struct {}
func (p *ConcreteProductB) Produce() {
fmt.Println("Producing Concrete Product B.")
}
type ProductFactory struct{}
func (f *ProductFactory) CreateProduct(productType string) Product {
switch productType {
case "A":
return &ConcreteProductA{}
case "B":
return &ConcreteProductB{}
default:
return nil
}
}
例文:
func main() {
product := CreateProduct("A")
product.Produce()
factory := &ProductFactory{}
product = factory.CreateProduct("B")
product.Produce()
}
Go言語でファクトリーデザインパターンを実装する一般的な2つの方法が述べられています。具体的な要件に応じて、どちらか1つを選択することができます。