2013-05-30 32 views
5

Tôi nên chọn phương pháp nào và tại sao? Có sự khác biệt thực sự nào không?Thuộc tính trừu tượng hoặc tham số hàm tạo cơ sở?

sở hữu Tóm tắt:

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

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

hoặc tham số constructor lớp cơ sở:

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

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

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

không may câu hỏi mà làm cho mọi người tranh cãi không được chấp nhận ở đây, câu hỏi này sẽ được đóng cửa nhanh –

+0

@FabioMarcolini làm thế nào để nói lại? Tôi cần câu trả lời! – astef

+0

không có câu trả lời thực sự cho câu hỏi này, nó chỉ là một vấn đề của những gì bạn cần này cho –

Trả lời

1

Khi họ đứng lớp học của bạn chỉ là lớp dữ liệu mà không phải là một thực hành OOP tốt. Dù sao tôi thích loại đầu tiên bởi vì nếu trong trường hợp đó trong một lớp con bạn có thể có một tiêu đề không harcoded như trong ví dụ

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

này nhưng nó vẫn có thể phụ thuộc nào trong hai là tốt hơn

Chúng ta hãy nói rằng lớp không phải là một cái gì đó như tĩnh như ví dụ này thì

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

InfoTable công khai (tên chuỗi, id chuỗi): cơ sở (tên + id) {} – astef

Các vấn đề liên quan