Home  >  Article  >  Backend Development  >  How to apply factory pattern in Golang

How to apply factory pattern in Golang

PHPz
PHPzOriginal
2024-04-04 11:33:021169browse

Factory Pattern In Go, the factory pattern allows the creation of objects without specifying a concrete class: defining an interface (such as Shape) that represents the object. Create concrete types (such as Circle and Rectangle) that implement the interface. Create a factory class to create objects of a given type (for example, ShapeFactory). Use factory classes to create objects in client code. This design pattern increases the flexibility of the code without directly coupling to concrete types.

How to apply factory pattern in Golang

Demystifying the factory pattern in Golang

Introduction

The factory pattern is a design pattern that allows We create objects without specifying concrete classes. This can be achieved by creating a factory class that is responsible for creating and returning object instances with a specific interface.

Implementation

In Golang, we can create factory patterns using interface{} and type. First, we need to define an interface to represent the object we will create. Let's take creating a shape factory as an example:

type Shape interface {
    Area() float64
    Perimeter() float64
}

Next, we need to create specific shape types, which implement the Shape interface:

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

Factory

Now we can create a factory class responsible for creating shape objects according to the given type:

type ShapeFactory struct{}

func (f *ShapeFactory) CreateShape(shapeType string) Shape {
    switch shapeType {
    case "circle":
        return &Circle{}
    case "rectangle":
        return &Rectangle{}
    default:
        return nil
    }
}

Practical case

In our In the case, we can use the factory class to create the shape object in the client code:

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

Output result:

Circle area: 78.53981633974483
Rectangle area: 50

Conclusion

Passed Using the Factory pattern, we are able to create shape objects without specifying a specific shape. This makes our code more flexible and maintainable.

The above is the detailed content of How to apply factory pattern in Golang. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn