我知道我的这个问题可能听起来很可怜,但作为.NET的初学者,对我来说意义重大。
我只想知道如何在我的购物车网站中使用抽象类,虚拟类等的概念。我已经在互联网上阅读了这个教程,我也看到了一些例子,但是这些例子非常普遍,以至于他们不适合现实世界的场景,就像我正在寻找购物网站一样。同样的问题一次又一次地出现在我的脑海中,为什么要创建一个类只给出方法和属性的声明。
据我所知,大多数人都是.NET的大师,并且有充分的知识,但如果你能帮助我思考这背后的逻辑,我会非常感激。
如果可能的话,请向我推荐asp.net设计模式的好书,我可以从中学习设计模式。
提前致谢
答案 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);
}
然后您的Book
和Car
类可以扩展。
答案 2 :(得分:1)
这是一本很好的设计模式书,里面有C#中的例子。
答案 3 :(得分:0)
对于每个设计,你都必须使用Abstarct
类或定义虚方法。
基本上virtual
关键字用于修改方法,属性,索引器或事件声明,并允许在派生类中重写它,Abstarct关键字使您能够仅为此目的创建类和类成员继承 - 定义派生的非抽象类的特征
在您的情况下,您可以拥有一个名为CartItem
的抽象类,它可以作为您在购物车中支持的所有类型项目的基类。所有类型的项都将继承CartItem
类。您无法直接创建CartItem
类的实例,但您可以将其用作实现多态性的参考。
您可以在ItemId
类中定义一些具体方法/属性,例如ItemName
,Price
,CartItem
等,这些方法/属性对于所有类型的项目都是通用的,您可以还定义了一些虚拟方法,您可以使用默认实现,但子类可以覆盖实现。