O padrão Flyweight é um padrão estrutural que permite compartilhar objetos para reduzir o uso de memória. Ele é aplicável quando um sistema usa muitos objetos similares e grande parte dos estados dos objetos pode ser externalizada. O padrão divide os estados dos objetos em intrínsecos e extrínsecos e compartilha os objetos que contêm apenas estados intrínsecos.