Documentation ¶
Index ¶
- func Get[T any]() (T, error)
- func GetDependencyContainer() *map[Metadata]any
- func GetFromFactory[T any]() (T, error)
- func GetInterfaceImplement() *map[Metadata]Metadata
- func IsRegistered[T any]() bool
- func Register[T any](object T)
- func RegisterFactory[T any](factory IFactory[T])
- func UnRegister[T any]()
- func UnRegisterFactory[T any]()
- type IFactory
- type Metadata
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Get ¶
Get an object of type T from dependency container. Return error if T was not registered.
Type T can be struct or interface. If T is an interface, it will return an implement of T. You must use the same type when register.
Example:
func main() { singoton.Register[IVehicle](new(Car)) vehicle, _ := singoton.Get[IVehicle]() vehicle.Run() }
func GetDependencyContainer ¶
GetDependencyContainer return a map of all registered objects.
func GetFromFactory ¶
GetFromFactory get an object of type T from factory. Return error if T was not registered.
Type T can be struct or interface. You must use the same type when register.
Example:
func main() { singoton.RegisterFactory[IStella](StarFactory{}) star, _ := singoton.GetFromFactory[IStella]() star.GetSize() star.GetTemperature() }
func GetInterfaceImplement ¶
GetInterfaceImplement return a map of all registered interface and it's implementation.
func IsRegistered ¶
IsRegistered check if an object of type T was registered to dependency container.
Type T can be struct or interface. Must be the same type when register.
Example:
func main() { singoton.Register[IVehicle](new(Car)) singoton.IsRegistered[IVehicle]() // return true singoton.IsRegistered[Car]() // return true singoton.IsRegistered[Bus]() // return false }
func Register ¶
func Register[T any](object T)
Register an object of type T to dependency container Type T can be struct or interface Example:
type IVehicle interface { Run() } type Car struct {} func (c *Car) Run() {} func main() { // Register IVehicle interface, with Car implement, pointer of Car singoton.Register[IVehicle](new(Car)) // Or you can just register Car, without interface singoton.Register(Car{...}) }
func RegisterFactory ¶
RegisterFactory register a factory of type T to dependency container.
Factory must implement IFactory[T] interface. Type T can be struct or interface.
Example:
type IStella interface { GetSize() int GetTemperature() int } type Star struct { size int temperature int } func (s Star) GetSize() int { return s.size } func (s Star) GetTemperature() int { return s.temperature } type StarFactory struct { } func (sf StarFactory) New() IStella { return Star{ size: rand.Int(), temperature: rand.Int(), } } func main() { singoton.RegisterFactory[IStella](StarFactory{}) }
func UnRegister ¶
func UnRegister[T any]()
UnRegister an object of type T from dependency container.
Type T can be struct or interface. Must be the same type when register.
Example:
func main() { singoton.Register[IVehicle](new(Car)) singoton.UnRegister[IVehicle]() }
func UnRegisterFactory ¶
func UnRegisterFactory[T any]()
UnRegisterFactory unregister a factory of type T from dependency container.
Type T can be struct or interface. Must be the same type when register.
Types ¶
Directories ¶
Path | Synopsis |
---|---|
test
|
|
performance_test
trunk-ignore-all(golangci-lint)
|
trunk-ignore-all(golangci-lint) |