2010-07-27 51 views
0

使用抽象類的我知道我的這個問題可能聽起來可憐你,但在.NET初學者,這意味着很多給我。在購物門戶

我只是想知道我怎麼可以使用抽象類,虛擬類等的概念,我的購物車網站。我已閱讀本教程那裏互聯網上,我看到了一些例子太多,但這些例子是如此普遍,他們這麼想的融入現實世界之情況就像我在尋找一個購物網站。一次又一次出現同樣的問題,我想到爲什麼要讓一個班只給出方法和財產的聲明。

據我所知,你們中的大多數是.NET大師,並有充足的它,但knowlesge如果你能剛幫我在思考這背後的邏輯我會很greatfull。

如果可能的話,請給我推薦了asp.net設計模式很好的書,從中我能學到的設計模式。

在此先感謝

回答

1

如果你不明白爲什麼要使用他們的話就不要現在。不要僅僅爲了它而使用設計模式。然而至於他們的目的,想象你想要允許不同類型的產品,但你永遠不會有隻是「產品」的東西 - 它總是像「書」或「汽車」那樣特定的東西。在這種情況下,你可以把公共屬性在抽象類Product像這樣:

public abstract class Product 
{ 
    /* Abstract Price allows Car/Book to apply their own category discounts */ 
    public abstract decimal Price { get; } 

    public string Title { get; } 

    public void AddReview(int userId, string reviewText) 
    { 
     /* Add review */ 
    } 

    public abstract List<Product> Recommendations(int userId); 
} 

,你的BookCar類可以再擴展。

0

它不是TURE,每德興,你必須使用Abstarct類或定義虛擬方法。

基本上virtual關鍵字用於修改方法,屬性,索引器或事件聲明,並允許它在派生類中重寫,並且Abstarct關鍵字允許您僅爲繼承目的創建類和類成員 - 定義派生的非抽象類的特徵

在你的情況下,你可以有一個叫做CartItem的抽象類,它作爲你在購物車中應該支持的所有類型的項目的基類。所有類型的項目將繼承CartItem類。您不能直接創建CartItem類的實例,但可以將其用作實現多態性的參考。

你可以這樣定義ItemId一些具體的方法/屬性,ItemNamePrice等在CartItem類是通用於所有類型的項目,你也可以定義一些方法的虛擬您擁有一個默認的實現但子類可以覆蓋實現。