This is only some kind of creation method. `BoxFactory` is not singleton, constructor is public. BoxFactory is stateless so I think creation method may return the same instance every time. I made this because in order to backward compatibility, in some places `boxFactory` is lazy-loaded and default value is object retrieved from `BoxFactory::instance` method.