I give myself a 'craving' day once a week.
If there's something I want throughout the week, I give in on Tuesdays, and only Tuesdays. (weigh-in day for me)
I still count the calories and work it into my total for the week.
This way I haven't been sabotaging with instant gratification, but at the same time if I am still craving that cupcake that was in my face on Friday come Tuesday I just have one and get it off my mind so I don't feel deprived either.
I have found that most cravings pass anyway, the ones that don't I enjoy them at their scheduled time. LOL!!
If there's an event or something that I know there will be bad stuff I either plan for it and make that my craving day for the week if I know I am going to just have to have what's there LOL or just don't eat there, just depends.
I have found this has worked for me, like i said, not deprived and in control.