Dogs do NOT generalize well. There's something that my trainer calls the Rule of Twenty. I've attended classes at another school and they use similar numbers...
This means that your dog has to do a command (a down stay for example) twenty times in a location... in twenty different locations... before the dog generalizes it well. Otherwise, you can have a dog that does a down stay well at home and in class but nowhere else. He doesn't realize that the term "Stay" while he's lying down means he has to lie there all of the time, even when he's at the park or at Starbucks...
Why am I telling you this? Well, it means that we have to socialize our dogs a lot more than we realize.
Your pup needs to be socialized to something (a cat perhaps) numerous times in at least twenty different locations before he generalizes the lesson (cats are ok AND don't chase cats.). Otherwise, he will probably learn "don't chase the cat at the vet's office." Not a useful lesson if your neighbor has an outside cat as well.
I don't have kids, or cats, or horses. So I'm a greedy opportunist. When I see a family with children, and the children seem to be relatively under control, I walk straight up to the parent and ask "May I borrow your children?" The parent looks surprised. I then explain that I'm teaching my puppy to adore children, but I don't have any of my own. So if her children aren't afraid of dogs and if they're not in a rush (I always like to leave the parents an easy reason to say no), would it be ok if her children simply give my puppy a little biscuit? That's all I need. Then I smile.
I think in all the years I've been doing this, I've had two or three parents say no. Most of the time, the parents offer to let me borrow their children for several days.
So I kneel down next to my puppy, so he feels like I'm right there supporting him, and I ask the children to feed him the cookies one at a time so that he doesn't try to eat them all at once (which makes them laugh). This way, he meets one child at a time. Some of the children are timid. Some walk right up and try to hug him -- which, since I'm kneeling at their level, I back them off and explain that he's not used to children yet, but they can feed him their cookie and he'll shake their hand. Meanwhile, he's learning that children are the BEST thing in the world.
With horses, if I see someone on a horse, I'll stand far back and do the same thing -- explain that I'm trying to socialize him to horses so that he's not one of those dogs that charge and bark at horses. Would it be ok if I simply approached? Again, I've never had anyone who has said no. I approach slowly, pausing while my pup is still calm and quiet, clicking and treating; then approaching, pausing , clicking and treating. This takes a few minutes, but the horseman sees that I'm completely in control of the training, so they've always been very patient. I think that every horseman has been charged by a dog at least once, so I guess they're glad to help a dog owner who is trying to do it right.
I do this with every diverse thing I can think of -- people of different races and cultures; people who wear unusual clothing or uniforms, including hats and those carrying large packages (which can freak dogs out if they're not used to it), strollers, wheelchairs, crutches... anything that is other than what he normally sees in my neighborhood from day to day. I simply park myself somewhere really obtrusive (outside a busy door), and I ask people if they would greet my dog. You can tell the people who would be inclined. They've already smiled at the adorable puppy. If they look afraid or busy, then I don't bother them. But you'd be surprised how many people are willing to help out and simply hand your puppy a treat.
I try to take my puppies to as many places as possible. BUT keep this in mind -- socialization doesn't mean simply taking your puppy out. It means giving your puppy as many diverse POSITIVE experiences as possible. So if you take your pup out and he has a terrifying experience, that's not socialization.
Therefore, we need to take our pups out when we can devote 100% (or at least 98%) of our attention to them and what they're experiencing. If you're going out shopping to the busy farmer's market and you have a lot to purchase -- with a lot of transactions, a lot of stuff to carry, and a lot of other dogs to deal with-- that may not be the best time to take your pup out. Better to take him to sit outside the library or outside a Starbucks when you have nothing else to do but make sure he has a good experience.