I never thought of it as a rule, but one thing we started doing with my DS is we rarely (if ever) buy souvenirs right when we see them. We take a picture of the person holding the item they want, take a picture of the price tag (including the bar code), and take a picture of the store we found it in. When we're waiting in line, we scroll through the photos and decide which items are a priority, and which we don't really want. We delete the price tag photos (and sometimes the store photos as well) for anything we decide not to buy. At the end of the day (or end of the trip if at DLR), we make a loop back to buy whatever wins as the "must have" souvenir. On one occasion at DLR we waited too long and the store was out of the backpack DS wanted, but because we had the price tag photo saved, the CMs were able to look it up for us and found it at a different store. They called over and had them hold it for us, and we were still able to get it.
This little trick has become a fun tradition for us for many reasons. It helps DS think about his budget, it helps get rid of the "I HAVE TO HAVE IT NOW!" attitude that was starting to pop up at the time, it gives us something to do while we wait in line, and we have some fun photos of each of us holding cute stuff we liked in the stores. DS is now 13, and he says that some of why he now has the patience to save his money and think about what he really wants to spend it on is because we taught him how to wait and think about it using this method.
Honestly, I just started it spontaneously when we were at DLR when he was 4 because I didn't want to carry around a toy he wanted to buy, and he was so enamored with seeing the picture of himself holding the toy that he began asking me to take his picture again in every store we went into! But hey, it worked, and it's now standard procedure for all of us when we travel anywhere!