Hi. Bramble is five and I'm afraid to say that we have never managed to cure her of the same sort of problem. The trouble is it has become learned behaviour. I've been told to try and avoid her practicing the behaviour as this just reinforces it.
When people come to the house, she barks like mad. If people fuss her the excitement tips over into growling. I'm very assertive with people who come and repeatedly ask them to ignore them and walk past them. Once they are in and sat down she does calm down.
Sitting outside a cafe is almost a No no, going inside - definitely not. We sat outside a cafe today, we are very careful where we choose to sit, avoiding people and other dogs, all was fine until a couple came to sit close by and a dog started barking in the distance. The barking and growling started and we made a hasty exit! I don't think she even knows what she's barking about half the time - it's just 'this is what I do in this situation'!
So we manage as best we can - at least I don't eat as much cake!