OOPS (Design Patterns) [chiusa]
-
22-09-2019 - |
Domanda
Ehi, Soglia Hi voglio messo sulla creazione di oggetti significa una classe può avere al massimo supporre 4 oggetti non più di quello come raggiungere questo obiettivo?
Soluzione
Un approccio sta usando una fabbrica di oggetto che crea al massimo 4 istanze. E 'una necessità interessante ... Sarebbe una piscina oggetto servire lo stesso bisogno?
Altri suggerimenti
È possibile contare il numero di istanze create utilizzando una proprietà di classe statica per memorizzare il conteggio. Questo può essere fatto sia nel costruttore della classe o si può fare uso di un modello di fabbrica. E 'un po' difficile rispondere a questa più precisamente senza conoscere la lingua di destinazione.
Provate a modificare il Singleton modello. È possibile utilizzare una variabile di conteggio. Avrete bisogno di mantenere il privato costruttore di avere il controllo della no. di istanze.
Un modo per farlo è il pattern Singleton Design, Ogni volta che facciamo una chiamata per creare un'istanza, controllare il numero dell'istanza che sono già creati, se il conteggio istanza è già raggiunto il 4, quindi utilizzare la stessa istanza per l'applicazione. Per avere un conteggio, Creat static int contatore = 0; e mantenere l'incremento esso per ottenere i risultati.
Il modo più semplice per farlo sarebbe quello di avere un attributo livello di classe chiamata "contare", e nel costruttore, basta assicurarsi che "contano" non è al di sopra di un certo numero.
//pseudocode
class foo
static count = 0
def constructor()
if count < 4
//create object
else
//there are too many!
Questa è breve snippest codice che darà il risultato di cui sopra in C #
sealed class clsInstance
{
public static int count = 0;
private static readonly clsInstance inst = new clsInstance();
clsInstance()
{
}
public static clsInstance Inst
{
get
{
if (count < 4)
{
Console.WriteLine("object : " + count);
count++;
return inst;
}
return null;
}
}
}
class MainClass
{
public static void Main(String[] args)
{
clsInstance c1 = clsInstance.Inst;
clsInstance c2 = clsInstance.Inst;
clsInstance c3 = clsInstance.Inst;
clsInstance c4 = clsInstance.Inst;
Console.ReadLine();
clsInstance c5 = clsInstance.Inst;
Console.ReadLine();
}
}