Mentre il modello del peso mosca definisce se stesso con oggetti immutabili "volanti", continuerà comunque a raggiungere l'obiettivo di ridurre l'utilizzo della RAM se non li rendi immutabili.
Il problema nel rendere gli oggetti mutabili è che, ad esempio, il tuo oggetto "Albero" ha diverse proprietà, alcuni sono memorizzati su un oggetto volante e alcuni appartengono all'istanza.
public class Tree
{
public int x { get; set;}
public int y { get; set;}
private static flyTree; //shared across many trees
public int Colour
{
get { return flyTree.Colour;}
set { flyTree.Colour = value;}
}
}
Quando cambi, ad esempio, le coordinate xey cambieranno solo per quell'istanza di Tree. Ma quando cambi colore, cambierà per tutti gli alberi.
Come utente dell'oggetto Tree non avrai un modo semplice per dire quali proprietà appartengono all'albero e quali appartengono all'oggetto di peso volante sottostante.
Rendere immutabile la parte condivisa del peso volatile impedisce a uno sviluppatore di modificare accidentalmente una proprietà su tutti gli alberi quando intendono cambiarla solo per un albero.