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.