2013-05-30 8 views
5

Quale metodo dovrei preferire e perché? C'è una vera differenza?Proprietà astratte o parametri del costruttore di base?

astratta proprietà:

abstract class Table 
{ 
    public abstract string Title { get; } 
} 

class InfoTable : Table 
{ 
    public override string Title 
    { 
     get { return "Info"; } 
    } 
} 

o classe base parametro del costruttore:

abstract class Table 
{ 
    public string Title { get; private set; } 

    public Table(string title) 
    { 
     Title = title; 
    } 
} 

class InfoTable : Table 
{ 
    public InfoTable() : base("Info") { } 
} 
+0

purtroppo questione che rendono le persone discutono non sono ben accolto qui, a questa domanda sta andando essere chiuso veloce –

+0

@FabioMarcolini come riformulare? Ho bisogno di una risposta! – astef

+0

non c'è una vera risposta a questa domanda, è solo una questione di quello che ti serve per –

risposta

1

Così come sono la classe sono solo classe di dati, che non è una buona pratica OOP. Comunque io preferisco il primo tipo, perché se in questo caso in una sottoclasse si può avere un titolo non harcoded come in questo esempio

class InfoTable : Table 
{ 
    private string id; 
    private string name; 
    public override string Title 
    { 
     get { return name+id; } 
    } 
} 

ma ancora può dipendere quale dei due è migliore

let accordo di dire che la classe non è qualcosa di statico come questo esempio quindi

private DynamicTitleProvider provider; 
public override string Title 
    { 
     get { return provider.GetTitle(); } 
    } 
+0

InfoTable pubblico (nome stringa, ID stringa): base (nome + id) {} – astef