2013-05-30 8 views
5

Welche Methode sollte ich bevorzugen und warum? Gibt es einen wirklichen Unterschied?Abstrakte Eigenschaften oder Basiskonstruktorparameter?

Zusammenfassung Eigenschaft:

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

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

oder Basisklassenkonstruktor Parameter:

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

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

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

leide Frage hier ist diese Frage würde schnell geschlossen werden, nicht etwas so statisch wie dieses Beispiel ist die Menschen zu machen streiten über nicht gut angenommen –

+0

@FabioMarcolini wie neu zu formulieren? Ich brauche Antwort! – astef

+0

Es gibt keine wirkliche Antwort auf diese Frage, es ist nur eine Frage dessen, was Sie für –

Antwort

1

Wie sie Ihre Klasse stehen, sind nur Datenklasse, die keine gute OOP Praxis ist. Auf jeden Fall ziehe ich die erste Art, denn wenn in diesem Fall in einer Unterklasse Sie einen nicht harcoded Titel wie in diesem Beispiel

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

haben, aber noch kann es abhängen, welche der beiden

Gut Lassen Sie uns besser ist sagen, dass die Klasse dann

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

public InfoTable (Zeichenfolgenname, Zeichenfolgen-ID): Basis (Name + ID) {} – astef

Verwandte Themen