Qual è il pattern chiamato dove si spostano le proprietà statiche di una classe in una classe separata? [chiuso]

-2

Personalmente, lo chiamo Pattern Blueprint; tuttavia, sono sicuro che qualcun altro deve averlo già nominato. I membri statici, nella maggior parte dei casi, non sono una buona cosa. In linguaggi come C # e Java, rimuovono il polimorfismo e incoraggiano un design scadente. Tuttavia, molte volte, ci sono proprietà condivise da tutte le istanze.

//Original class where shared properties are static
class StandardHenchman
{
    static int MaxHealth;
    static int Speed;
    int CurrentHealth;
    int X;
    int Y;
}

//More maintainable and flexible design 
class NPCType
{
    int MaxHealth;
    int Speed;
}

class NPC
{
   NPCType Type;
   int CurrentHealth;
   int X;
   int Y;
}

henchman1 = new NPC();
henchman1.Type = standardHenchman;
henchman2 = new NPC();
henchman2.Type = standardHenchman;

È possibile duplicare semplicemente i valori condivisi in ogni istanza, ma penso che abbia anche problemi.

Qual è il pattern chiamato dove dichiari membri condivisi / statici con composizione?

    
posta TheCatWhisperer 28.04.2017 - 22:43
fonte

1 risposta

0

È simile al modello di peso vivo in quanto "l'oggetto è diviso in due parti: la parte dipendente dallo stato (estrinseca) e la parte indipendente dallo stato (intrinseca). "

Ma è diverso in quanto la motivazione alla base di Flyweight è il risparmio di memoria (non il riutilizzo del codice) durante l'istanziazione di molti oggetti . Lo fa separando la parte comune a tutte le istanze in una classe separata, incluso il comportamento, non necessariamente perché sono statiche. Inoltre, Flyweight comprende una fabbrica e il caching di oggetti.

Direi che è una versione semplice di Flyweight anche se, ovviamente, non "il" Flyweight.

    
risposta data 28.04.2017 - 23:23
fonte