2013-05-30 10 views
5

Którą metodę preferuję i dlaczego? Czy jest jakaś prawdziwa różnica?Właściwości abstrakcyjne lub parametry konstruktora podstawowego?

Streszczenie nieruchomości:

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

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

lub parametr konstruktora klasy bazowej:

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

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

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

niestety pytanie, które ludzie spierają się, nie są dobrze przyjmowane tutaj, to pytanie to będzie zamknięte szybko –

+0

@FabioMarcolini jak rephrase? Potrzebuję odpowiedzi! – astef

+0

nie ma prawdziwej odpowiedzi na to pytanie, to tylko kwestia tego, co jest potrzebne dla –

Odpowiedz

1

jak stoją swoją klasę to tylko klasa dane, które nie jest dobrą praktyką OOP. każdym razie wolę pierwszy typ bo jeśli w tym przypadku w podklasie można mieć non harcoded tytuł jak w tym przykładzie

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

ale nadal może zależeć, który z nich jest lepszy

Ok LET'S powiedzieć, że klasa nie jest czymś, co statyczne, jak ten przykład wtedy

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

public InfoTable (nazwa łańcucha, ciąg znaków): base (name + id) {} – astef

Powiązane problemy