package
0.0.0-20230501180844-dca2a0ba871b
Repository: https://github.com/crazybber/go-patterns.git
Documentation: pkg.go.dev
# README
go-registry
Merged :https://github.com/Kaezon/go-registry
A generic interface for the registry pattern
Because adding a registry pattern to each project can result in a lot of code duplication, I decided to write a basic registry to slim down other projects.
The registry itself accepts empty interface for the values to be registered, so there's no need to worry about type here. I do realize that this is not necessarily the best answer to making a general purpose type, so I plan on adding some kind of type checking if I can find a good way to do so.
Usage
import (
"fmt"
"github.com/crazybber/awesome-patterns/behavioral/registry"
)
var myReg registry.Registry
myReg = registry.New()
newID := myReg.Register(1)
myReg.RegisterName(2, "second")
fmt.Println(myReg.Get(newID))
fmt.Println(myReg.Get("second"))
myReg.Deregister(newID)
myReg.Deregister("second")
# Functions
New returns a new Registry interface.
# Structs
IDNotFound is an error thrown when an id is not found in a Registry.
NameAlreadyRegistered is an error thrown when a duplicate id is found durring registration.
# Interfaces
Registry acts a generic data registry Objects are registered with the underlying struct, which returns an ID string The ID string can then be used to retreive the object, or to remove it from the registry.