在购物门户中使用抽象类

时间:2010-07-27 04:59:29

标签: asp.net design-patterns oop

我知道我的这个问题可能听起来很可怜​​,但作为.NET的初学者,对我来说意义重大。

我只想知道如何在我的购物车网站中使用抽象类,虚拟类等的概念。我已经在互联网上阅读了这个教程,我也看到了一些例子,但是这些例子非常普遍,以至于他们不适合现实世界的场景,就像我正在寻找购物网站一样。同样的问题一次又一次地出现在我的脑海中,为什么要创建一个类只给出方法和属性的声明。

据我所知,大多数人都是.NET的大师,并且有充分的知识,但如果你能帮助我思考这背后的逻辑,我会非常感激。

如果可能的话,请向我推荐asp.net设计模式的好书,我可以从中学习设计模式。

提前致谢

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分: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类可以扩展。

答案 2 :(得分:1)

答案 3 :(得分:0)

对于每个设计,你都必须使用Abstarct类或定义虚方法。

基本上virtual关键字用于修改方法,属性,索引器或事件声明,并允许在派生类中重写它,Abstarct关键字使您能够仅为此目的创建类和类成员继承 - 定义派生的非抽象类的特征

在您的情况下,您可以拥有一个名为CartItem的抽象类,它可以作为您在购物车中支持的所有类型项目的基类。所有类型的项都将继承CartItem类。您无法直接创建CartItem类的实例,但您可以将其用作实现多态性的参考。

您可以在ItemId类中定义一些具体方法/属性,例如ItemNamePriceCartItem等,这些方法/属性对于所有类型的项目都是通用的,您可以还定义了一些虚拟方法,您可以使用默认实现,但子类可以覆盖实现。