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

How to apply factory pattern in Golang

PHPz
Release: 2024-04-04 11:33:02
Original
1227 people have browsed it

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
}
Copy after login

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
}
Copy after login
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)
}
Copy after login

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
    }
}
Copy after login

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())
Copy after login

Output result:

Circle area: 78.53981633974483
Rectangle area: 50
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template