Estado intrínseco e extrínseco
Um mapa com milhares de marcadores pode repetir ícone, cor e estilo. Esses dados intrínsecos podem ser compartilhados; posição e estado selecionado são extrínsecos e continuam associados a cada marcador.
Exemplo em C#
public sealed record EstiloMarcador(string Icone, string Cor);
public sealed class Estilos
{
private readonly Dictionary<string, EstiloMarcador> _cache = new();
public EstiloMarcador Obter(string tipo) =>
_cache.TryGetValue(tipo, out var estilo)
? estilo
: _cache[tipo] = Criar(tipo);
private static EstiloMarcador Criar(string tipo) => new($"{tipo}.svg", "#2f8f64");
}
public sealed record Marcador(double Latitude, double Longitude, EstiloMarcador Estilo);Objetos de estilo imutáveis tornam seguro compartilhar a mesma referência.
Quando vale o custo
Use após medir pressão de memória em populações grandes de objetos repetitivos. Cache, concorrência, invalidação e crescimento sem limite também têm custo; não transforme toda entidade em flyweight preventivamente. Proxy também pode controlar acesso a objetos; leia o índice dos padrões GoF.