package dynamic import ( "reflect" ) var BeanFactory *BeanFactoryImpl func init() { BeanFactory = NewBeanFactory() } type BeanFactoryImpl struct { beanMap BeanMap } func NewBeanFactory() *BeanFactoryImpl { return &BeanFactoryImpl{beanMap: make(BeanMap)} } func (f *BeanFactoryImpl) BeanRegister(bean interface{}) { f.beanMap.addBean(bean) } func (f *BeanFactoryImpl) GetBean(name string) reflect.Value { if name == "" { return reflect.Value{} } v := f.beanMap.getBean(name) if v.IsValid() { return v } return reflect.Value{} } func (f *BeanFactoryImpl) GetBeanInterface(name string) interface{} { if name == "" { return nil } v := f.beanMap.getBean(name) if v.IsValid() { return v.Interface() } return nil }