Sottoclassi vs Utilizzo delle proprietà per discriminare i tipi

0

Spesso scrivendo codice mi chiedo quale sia il modo migliore per discriminare tra tipi (con cui non intendo necessariamente i tipi usati nei tipi di sistema). Ciò porta a 3 domande:

  • Cosa c'è di meglio?
  • Quando è meglio?
  • Quali sono i (dis) vantaggi?

Uso delle proprietà per discriminare

class BinaryExpression {

    String operator; // e.g. "+"
    Number lhs, rhs;
}

Sottoclassi per discriminazione

class BinaryExpression {
    Number lhs, rhs;
}

class Addition extends BinaryExpression {}

// Etc.

Nota: non sono sicuro di avere i termini giusti. Per favore correggimi se sbaglio.

    
posta Tim 03.10.2015 - 20:08
fonte

1 risposta

3

Se esiste una differenza funzionale o operativa tra i tipi, la creazione di tipi espliciti consente implementazioni orientate agli oggetti più pulite dei diversi comportamenti funzionali.

Se la differenza è solo una cosa apparente, allora l'orientamento completo dell'oggetto potrebbe essere eccessivo (anche se ci saranno molti puristi che si oppongono a questo approccio pragmatico).

Per il tuo esempio di operatori. Se si utilizza effettivamente la classe operatore per eseguire calcoli, la sottoclasse è probabilmente la strada da percorrere (a causa delle diverse implementazioni di un metodo di "calcolo", ad esempio).

Se stai semplicemente tenendo il contenuto per la serializzazione dell'output, allora una proprietà contenente il carattere dell'operatore potrebbe essere tutto ciò che serve ai tuoi scopi.

    
risposta data 03.10.2015 - 20:36
fonte

Leggi altre domande sui tag