Factory Pattern In Go, le modèle d'usine permet la création d'objets sans spécifier de classe concrète : définissez une interface (telle que Shape) qui représente l'objet. Créez des types concrets (tels que Cercle et Rectangle) qui implémentent l'interface. Créez une classe d'usine pour créer des objets d'un type donné (par exemple, ShapeFactory). Utilisez des classes d'usine pour créer des objets dans le code client. Ce modèle de conception augmente la flexibilité du code sans se coupler directement aux types concrets.
Introduction
Le modèle d'usine est un modèle de conception qui nous permet de créer des objets sans spécifier de classe concrète. Ceci peut être réalisé en créant une classe d'usine chargée de créer et de renvoyer des instances d'objet avec une interface spécifique.
Implémentation
Dans Golang, nous pouvons créer des modèles d'usine en utilisant interface{}
et type
. Tout d’abord, nous devons définir une interface pour représenter l’objet que nous allons créer. Prenons comme exemple la création d'une usine de formes : interface{}
和 type
创建工厂模式。首先,我们需要定义一个接口来表示我们将创建的对象。让我们以创建一个形状工厂为例:
type Shape interface { Area() float64 Perimeter() float64 }
接下来,我们需要创建具体形状的类型,它们实现了 Shape
type Circle struct { radius float64 } func (c *Circle) Area() float64 { return math.Pi * c.radius * c.radius } func (c *Circle) Perimeter() float64 { return 2 * math.Pi * c.radius }
Shape
: type Rectangle struct { length float64 width float64 } func (r *Rectangle) Area() float64 { return r.length * r.width } func (r *Rectangle) Perimeter() float64 { return 2 * (r.length + r.width) }
type ShapeFactory struct{} func (f *ShapeFactory) CreateShape(shapeType string) Shape { switch shapeType { case "circle": return &Circle{} case "rectangle": return &Rectangle{} default: return nil } }
factory := &ShapeFactory{} circle := factory.CreateShape("circle") circle.radius = 5 fmt.Println("Circle area:", circle.Area()) rectangle := factory.CreateShape("rectangle") rectangle.length = 10 rectangle.width = 5 fmt.Println("Rectangle area:", rectangle.Area())
Circle area: 78.53981633974483 Rectangle area: 50
rrreee Conclusion
En utilisant le modèle d'usine, nous sommes en mesure de créer des objets de forme sans spécifier de forme spécifique. Cela rend notre code plus flexible et maintenable. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!