1,2,3 Magic is good.
This may sound crazy, but when I have to deal with 3-year olds (and I do, a lot), I try to NEVER say NO. At this age the name of the game is redirecting.
Example: Kids frustrated and wants to hit you. I say, good punch! How hard can you hit this pillow? and make it a game.
Example: Kid wants popsicle 5 minutes before dinner. I grab a toy and give it to him. And then lead him away from the kitchen where the treats are.
Step 2: This takes skill and practice on your end, but you should always try to catch him doing the RIGHT thing and tell him that you like it!
Example: Kid asks nicely for a cookie. You say, "Wow! I love how nicely you asked! You can have a cookie after dinner. Hey, where are your Legos? Let's play with them! (redirecting...)
Example: Kid shares his toy with another 3 year old (it does happen). You say, I like the way you shared with Trevor...you're acting like a good big boy!
Example: You are out with your kid and you see another kid saying "please and thank you" to and adult. You comment: Wow, that is a nice boy--see how he's saying please? (Dollars to donuts, your kid will say please next time--make sure you comment on it!)
See how this works?
Still takes time and patience...but it sure cuts down on the hollering, domineering behavior, etc. And you're setting a very good example yourself!
P.S. The only time I say no, is when there is imminent danger, such as a child ready to run out into traffic. That way, my "no's" COUNT.