简介

对象交给容器控制,对象与对象之间松耦合。

容器设计

  1. // 注册单例对象
  2. func (p *Container) SetSingleton(name string, singleton interface{}) {
  3. p.Lock()
  4. p.singletons[name] = singleton
  5. p.Unlock()
  6. }
  7. // 获取单例对象
  8. func (p *Container) GetSingleton(name string) interface{} {
  9. return p.singletons[name]
  10. }
  11. // 获取实例对象
  12. func (p *Container) GetPrototype(name string) (interface{}, error) {
  13. factory, ok := p.factories[name]
  14. if !ok {
  15. return nil, ErrFactoryNotFound
  16. }
  17. return factory()
  18. }
  19. // 设置实例对象工厂
  20. func (p *Container) SetPrototype(name string, factory factory) {
  21. p.Lock()
  22. p.factories[name] = factory
  23. p.Unlock()
  24. }