-4

我是 asp.net 程序员,我有两个应用程序,一个是像 eBay 网站这样的电子商务应用程序,另一个是管理,比如商店管理系统,比如 bigbazzar 或任何书店等。

现在我想在我的项目中实现接口和抽象类。我已经阅读了抽象类和接口,并且知道如何使用理论。但是我正在寻找与我的应用程序相关的真实世界或实际示例。(即对于电子商务和商店管理)我已经搜索了很多示例网络电子商务和管理,其中接口和抽象类被精美地使用。任何人都可以帮助我如何使用我的电子商务和商店管理应用程序中使用的接口和抽象类。

如果您可以共享使用抽象类和接口的任何相关(即电子商务和商店管理)应用程序或项目,那就太好了,这样我就可以轻松地与我的项目相关联。

4

1 回答 1

1

您的问题非常广泛,正如@doogle 在评论中提到的那样,抽象类和接口不一定与特定类型的项目相关联,而是基于您的设计。

在不了解您的电子商务或商店管理应用程序的设计的情况下,不可能为您提供任何具体帮助,但在阅读您之前的一个问题时,您似乎正在尝试了解抽象类和接口如何能够提供帮助你,所以这里有一个基本的例子,可以为你指明正确的方向。

在假设的商店中,您有数千种不同的产品,并且您希望在您的应用程序中跟踪它们。显然,所有产品都有一些共同点,例如制造商、价格、部门、数量,但也有可能仅适用于特定产品的信息片段(衣服有尺寸,但 DVD 没有)。

一个解决方案可能是创建一个Product对所有产品都通用的接口,但允许每个类实现该接口并添加自己的属性。现在,您可以保证任何产品类别都至少具有这些共同成员。

这是一个假设的产品界面:

public interface IProduct
{
    decimal SellingPrice { get; set; }
    decimal StoreCost { get; set; }
    int QuantityOnHand { get; set; }

    string Manufacturer { get; set; }
    string DepartmentName { get; set; }

    decimal CalculateProfit();
}

然后你可以创建一个抽象类来实现IProduct. 这是一个实现IProduct但还添加了一个Size字段的服装产品

public abstract class ClothingProduct : IProduct
{
    public string Size { get; set; }

    public decimal SellingPrice { get; set; }
    public decimal StoreCost { get; set; }
    public int QuantityOnHand { get; set; }
    public string Manufacturer { get; set; }
    public string DepartmentName { get; set; }

    // by marking CalculateProfits abstract, you can let every class that inherits
    //  from ClothingProduct decide how to calculate the profit based on the selling
    //  costs of that product
    public abstract decimal CalculateProfit(); 
}

现在您有了一个ClothingProduct类,然后您可以为商店中的一些商品创建类。这是一个鞋子和衬衫类:

public class Shirt : ClothingProduct
{
    public override CalculateProfit()
    {
        return this.SellingPrice - this.StoreCost - this.CalculateSellingCosts();
    }

    private decimal CaclulateSellingCosts()
    {
        // some code that would let you calculate the selling costs and
        //  overhead costs associated with this specific product
    }
}

public class Shoes : ClothingProduct
{
    private const decimal commissionRate = 0.05;

    public override CalculateProfit()
    {
        return this.SellingPrice - this.StoreCost - this.CalculateSellingCosts() - this.CalculateCommission();
    }

    private decimal CaclulateSellingCosts()
    {
        // some code that would let you calculate the selling costs and
        //  overhead costs associated with this specific product
    }

    private decimal CalculateCommission()
    {
        return this.SellingPrice * commissionRate;
    }
}

最后,两者ShoesShirt都是IProducts因为它们继承了ClothingProductwhich 又实现了IProduct.

您能否为整个商店中的其他产品创建其他类或抽象类,但只要实现IProduct,您就可以保证它们将拥有属于IProduct.

这有助于您甚至可以创建接口类型的集合并将所有产品添加到其中,因为所有实现IProduct

// a hypothetical method that grabs everything  (maybe from a database)
List<IProduct> products = GetAllProducts(); 

// this query would give you the total number of items in your inventory
var totalItems = products.Select(quant => quant.QuantityOnHand).Sum();

// and this would calculate the total value of the products based on the store's cost
var totalCost =  products.Select(quant => quant.StoreCost).Sum();

这两个查询只是人为的示例,因为在数据库中执行此操作同样容易(如果这是存储所有内容的地方),但我这样做只是为了给您提供一个示例,说明如何将所有相关项目绑定回单个界面可以帮忙

于 2012-05-10T14:37:51.780 回答