The flyweight design pattern allows you to reuse memory spaces in an application when you have lots of objects that are almost identical in nature. For example, if you are writing a game for a smartphone where the amount of memory is very limited and you need to show many aliens that are identical in shape, you can have only one place that holds the shape of the alien instead of keeping each identical shape in the precious memory.