The advice is to have one SpriteBatch instance, and minimise the number of Begin/End calls. This reduces memory usage and improves rendering performance.
How you work your game code around that generic advice depends on what you're doing.
How you get the SpriteBatch reference to your rendering code is also up to you You can pass it as a parameter, keep a global static or singleton, add it as a Service and get references that way etc. Whatever. I tend to use the Service method FWIW.