• 简介
  • 容器设计

    简介

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

    容器设计

    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. }