Strategy, State, Command, Visitor (and more I'm sure) all have some behavior built into an object that we can pass around, so they all have a very similar feeling when you're building the object. Their "intent" is subtly different and yet sometimes overlapping.
Visitor is often (but not always) a way to add new functionality to an existing object graph. The example I learned on is an HTML parser that builds a DOM of objects on an HTML page and invites me to add functionality via visitors. I can do that without modifying the DOM objects.
I use Strategy a lot to handle inputs differently based on some attribute. Say a method expects an Appliance argument and does special work on Toasters, Blenders, Microwaves, etc. I might have a long case statement to
test for each type and do the right thing, or just get the right Strategy from a Map and execute it. (Of course the better solution is to build polymorphic behavior into the parameter objects, but for reasons too long to explain today I couldn't.)