Sto lavorando all'applicazione WPF e ho bisogno di una migliore decisione di progettazione per uno scenario. Fondamentalmente, sto leggendo un assembly .net per estrarre i tipi e le proprietà e mapparlo alle mie classi personalizzate create per contenere quei dati per renderlo serializzabile. Durante l'estrazione, ho richiesto un modo per non leggere di nuovo lo stesso tipo se viene rilevato come parte di alcuni tipi di proprietà.
problema
Voglio un modo per ricordare tutti i tipi estratti e quando appaiono di nuovo usano lo stesso riferimento da qualche memoria in-memory.
Ora posso pensare a una soluzione che utilizzi il modello di progettazione Cache o Factory. Ma ha bisogno di un verdetto esperto per fare colpo su questa situazione.
Attualmente, ho progettato sotto la classe per conservare e memorizzare i riferimenti.
public abstract class Factory<S, T> : IFactory<S, T>
{
private static readonly Dictionary<S, T> Cache = new Dictionary<S, T>();
public T Create(S source)
{
if (!Cache.ContainsKey(source))
{
Cache.Add(source, CreateInstance(source));
}
return Cache[source];
}
protected abstract T CreateInstance(S source);
}